Movable Type で記事を先頭に固定表示
カテゴリー: その他
この記事は2015年7月21日に書かれたものです。情報が古い可能性がありますのでご注意ください。
WordPress の投稿には、公開状態に “この投稿を先頭に固定表示” というオプションがあり、チェックした投稿は、メインページなどの投稿の一覧で常に先頭に表示されます。
一方、Movable Type にはこのような機能はありませんので、同様のことをしようとするなら、カスタムフィールド等を使って実装する必要があります。
チェックボックス型のカスタムフィールドを使って先頭に固定表示のフィールドを追加し、メインページテンプレート等で、記事の一覧を出力する前にチェックされた記事の一覧を出力すればよいわけですが、単に出力しただけでは1ページに表示する記事の件数がチェックした記事の件数分増えてしまいます。
そこで、チェックされた記事が複数あっても、一覧に表示される記事の総件数が変わらないようにしてみます。
メインページに表示する記事の件数が10件で、先頭に固定表示するためのチェックボックス型のカスタムフィールドのテンプレートタグを EntrySticky
、ベースネームを entrysticky
と設定したとします。
まず、チェックされた記事の一覧を出力します。
<mt:Entries field:entrysticky="1">
<article>
<h2><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle encode_html="1"$></a></h2>
<p class="published"><$mt:EntryDate format="%x"$></p>
<div class="entry-content">
<$mt:EntryBody$>
</div>
</article>
</mt:Entries>
上記のループの中で、チェックされた記事の件数を取得するコードを追加します。(上記の <article>
から </article>
の中は省略しています)
<mt:Entries field:entrysticky="1">
<article>
………
</article>
<mt:EntriesFooter>
<$mt:EntriesCount setvar="sticky_count"$>
</mt:EntriesFooter>
</mt:Entries>
次にメインページに表示する記事の件数から、チェックされた記事の件数を差し引きます。
<mt:Setvar name="index_count" value="10">
<mt:Setvar name="index_count" value="$sticky_count" op="-">
上記は、投稿設定の「表示される記事数」を取得することができる「GetEntriesOnIndex プラグイン」を利用すれば、以下のように書くことができます。
<$mt:EntriesOnIndex setvar="index_count"$>
<mt:Setvar name="index_count" value="$sticky_count" op="-">
この差し引いた件数の、チェックされた記事(既に出力した記事)を除く最新の記事の一覧を出力します。
<mt:Entries lastn="$index_count" unique="1">
<article>
………
</article>
</mt:Entries>
<article>
から </article>
が繰り返し出てきますので、この部分をテンプレートモジュールに書き出し、<$mt:Include$>
で読み込んだ方が、修正する場合に間違いが少ないかもしれません。