PowerCMS X ブログ
2023-12-14
ビューでオブジェクトをループ出力する際に複数のソート条件でソートする方法をご紹介します。
※この機能は PowerCMS X ver.3.23 / 2.723 以降のバージョンで利用することができます。(リリースノート)
例えば「記事」を「公開日」の「降順」でソートする場合は、下記のように記述します。
<mt:entries sort_by="published_on" sort_order="descend">
[<mt:entrydate />] <mt:entrytitle />
</mt:entries>
モデルのカラム名をタグ属性「sort_by」で指定することでカラムの値を使ってソートを行います。
タグ属性「sort_order」は順序(ascend=昇順、descend=降順)を指定します。
オブジェクトをループ出力するタグ(例 mt:entries)のタグ属性「sort_by」「sort_order」 は同時に複数の値を指定をすることが可能です。
例えば「記事」を
でソートする場合は下記のように記述します。
<mt:entries sort_by="'published_on','title'" sort_order="'descend','ascend'">
[<mt:entrydate />] <mt:entrytitle />
</mt:entries>
下記のように配列を指定することも可能です。
<mt:setvar name="array_sort_by" function="push" value="published_on" />
<mt:setvar name="array_sort_by" function="push" value="title" />
<mt:setvar name="array_sort_order" function="push" value="descend" />
<mt:setvar name="array_sort_order" function="push" value="ascend" />
<mt:entries sort_by="$array_sort_by" sort_order="$array_sort_order">
[<mt:entrydate />] <mt:entrytitle />
</mt:entries>
複数条件でソートする場合は sort_by と sort_order が対になるように指定してください。
複数のソート条件で出力順が同じ場合は sort_by は1つでも機能します。
その場合は下記のように記述してください。
<mt:entries sort_by="'published_on','title'" sort_order="descend">
[<mt:entrydate />] <mt:entrytitle />
</mt:entries>
カテゴリー:テンプレート作成Tips
投稿者:fujimoto