【Movable Type】特定の記事を先頭に固定表示する方法(コンテンツタイプ版)
今回とある案件にて、
標題についてのご要望がありましたため、調査してみました。
参考記事
Movable Type で記事を先頭に固定表示
こちらの記事が参考になりましたので、
ありがたく先人の知恵をお借りします。
改修内容
今回私はコンテンツタイプにて実装したことと、
固定表示記事の並び替えをコントロールする機能を追加したため、
タグや出力の一部を少しカスタマイズします。
まず下準備として、コンテンツフィールドで、
固定表示"有無"を選択するコンテンツフィールド(ラジオボタン)を追加、yesの記事のみを抽出、
固定表示の並び順を指定するコンテンツフィールド(数値)をsort_byに指定し並び替え、sort_orderはascend(昇順)にします。
※参考記事にあるように、固定表示の判定はチェックボックス型でも可能です。
<mt:Entries>を<MT:Contents>に変え、
<mt:EntriesFooter>は<mt:ContentsFooter>に変更します。
繰り返し出力で使うコードは、テンプレートモジュール化しておきincludeで読み込みました。
あとは参考記事の通り、固定表示有の件数を取得して、
表示したい箇所の最大件数を設定(私は6件の設定)、固定表示の件数を差し引きします。
1点、記事とコンテンツタイプで異なることが!
出力件数を指定するモディファイアには、lastnとlimitがありますが、
コンテンツタイプの場合limitに統一されたため、lastnを使用しないようにご注意ください。
(私はしばらくこれにハマり、思うような出力ができず頭を抱えました...)
完成したコードはこちら↓↓
<MT:Contents content_type="コンテンツタイプ名" field:固定表示"有無"を選択するコンテンツフィールドユニークID="yes" sort_by="field:固定表示の並び順を指定するコンテンツフィールドユニークID" sort_order="ascend"> <$mt:Include module="出力共通テンプレート"$> <mt:ContentsFooter> <$mt:ContentsCount setvar="sticky_count"$> </mt:ContentsFooter> </MT:Contents> <mt:Setvar name="index_count" value="6"> <mt:Setvar name="index_count" value="$sticky_count" op="-"> <MT:Contents content_type="コンテンツタイプ名" limit="$index_count" unique="1"> <$mt:Include module="出力共通テンプレート"$> </MT:Contents>
さらにカスタマイズ
上記はメインページに最新6件の表示にしていますが、
過去の情報を別ページに出力したい場合、
メインページに掲載した記事は除外し、残りの記事を表示するための記述を考えました。
先ほどのコードを活かし、固定表示有の件数を取得して、
最大件数から差し引きした記事を出力(したことに)しておきます。
<MT:Contents content_type="コンテンツタイプ名" field:固定表示"有無"を選択するコンテンツフィールドユニークID="yes"> <mt:ContentsFooter> <$mt:ContentsCount setvar="sticky_count"$> </mt:ContentsFooter> </MT:Contents> <mt:Setvar name="index_count" value="6"> <mt:Setvar name="index_count" value="$sticky_count" op="-"> <MT:Contents content_type="コンテンツタイプ名" limit="$index_count" unique="1"> </MT:Contents>
このコードをhtmlの外側に記述しておき、
残りの記事を表示したい箇所に以下を記入します。
<MT:Contents content_type="コンテンツタイプ名" limit="0" unique="1"> <$mt:Include module="新着情報テンプレート"$> </MT:Contents>
limit="0"で全件表示、
unique="1"で「htmlの外側で出力した記事を除外」して表示させることができます。
さいごに
今回も先人の知恵をお借りしつつ、求めた実装にたどり着くことができました。
今回はコンテンツタイプを使用し、
記事とコンテンツタイプの違いなどを把握しながら実装しました。
いずれは、コンテンツタイプについての記事もまとめたいと思います。それでは!
弊社では、Movable TypeやWordPressを使用したCMS構築・サイト制作を行っております。
制作のご依頼など、ぜひお気軽にお問い合わせください。
フォローしませんか?
お気軽にご依頼・ご相談ください