Forで処理される順番を指定したい

Topic summary

  • テーマ/課題: Liquid の paginate/for で pages コレクションを処理する際の「p」の意味とループ順の制御方法。

  • 技術的背景:

    • 「p」は for ループ内で各ページオブジェクトを受け取るループ変数。p.title や p.content でプロパティ参照。
    • 既定の順序は作成順ではなく、投稿者は「ハンドル(スラッグ)のアルファベット順」の可能性を示唆。
  • 最新の進展/解決:

    • フィルタで順序を指定可能と判明。pages | sort: ‘published_at’ | reverse により公開日の降順に並び替えできた。
    • paginate と併用して 1ページ4件の表示も動作確認済み。
  • 状態/未解決点:

    • 並び替え方法は解決。既定順の正式仕様は明確化されていないが、sort/reverse で実運用の要件は満たせる。
  • 備考: コード断片(for ループ、sort フィルタ、reverse、paginate)が理解の中心。

Summarized with AI on February 20. AI used: gpt-5.

前回質問した内容の延長なのですが、下記のコードでページの取得はできたのですが


{%- paginate pages by 4 -%}
{%- for p in pages -%}
 - {{ p.content }}
       {{ p.title }}
    
 
{%- endfor -%}
{{ paginate | default_pagination: next: 'Older', previous: 'Newer' }}
{%- endpaginate -%}

上記のコードでページの処理はできたのですが疑問というかあと一歩のところで躓いています。

{%- for p in pages -%}のなかにあるpとは何のことでしょうか。

またページのループ処理される順番がページの作成準ではなくぐちゃぐちゃになってしまいました。この処理される順番はどのように決まっているのでしょうか。その場合こちらで処理の順番を指定することは現状不可能なのでしょうか。

多分ですがハンドルのアルファベット順的な感じになってると思うのですがこれのソート順を変えることは可能なのでしょうか…

下記で並び替えはできました
{%- for p in pages | sort: ‘published_at’ | reverse -%}