【Movable Type】特定の記事を先頭に固定表示する方法(コンテンツタイプ版)

movable_type_contents_type_main.png

今回とある案件にて、
標題についてのご要望がありましたため、調査してみました。

参考記事

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構築・サイト制作を行っております。
制作のご依頼など、ぜひお気軽にお問い合わせください。

お気軽にご依頼・ご相談ください

前へ

Native Library Interop (旧称:Slim Bindings) 作り方編

次へ

たまには業務の様子を紹介します! Power Platformアイディアソンを支援しました。