Movable Typeで記事一覧を表示する際、カスタムフィールドで用意したチェックボックスにチェックが入っている場合は優先表示したいということがたまにあるので、実装方法についてメモしておきます。
サンプルコード
まずは以下のようなカスタムフィールドを用意します。
- 名前:優先表示
- 種類:チェックボックス
- ベースネーム:prioritycheckbox
- テンプレートタグ:EntryPriorityCheckbox
次にテスト用の記事を作成します。
- テストA(優先表示のチェック:なし)
- テストB(優先表示のチェック:あり)
- テストC(優先表示のチェック:なし)
まずは設定前の一覧表示を確認してみます。
<mt:Entries> <mt:EntryTitle> <mt:If tag="EntryPriorityCheckbox"> 優先表示: <mt:EntryPriorityCheckbox> </mt:If> </mt:Entries>
再構築を行うと、公開日の新着順で以下のように表示されました。
テストC テストB 優先表示: 1 テストA
次にチェックボックスにチェックを入れた記事を優先して表示してみます。
MTEntriesでsort_byを設定します。
<mt:Entries sort_by="field:prioritycheckbox"> <mt:EntryTitle> <mt:If tag="EntryPriorityCheckbox"> 優先表示: <mt:EntryPriorityCheckbox> </mt:If> </mt:Entries>
sort_byでカスタムフィールドを使用する場合、「field:カスタムフィールドのベースネーム名」の形で指定します。
再構築を行うと、チェックしたテストBが先頭に表示されて、以降は標準の新着順になりました。
テストB 優先表示: 1 テストC テストA
コメントが承認されるまで時間がかかります。