Movable Typeのコンテンツデータで公開日を比較する方法

Movable Typeのコンテンツデータで公開日を比較する方法

Posted at August 30,2021 11:55 PM
Tag:[]

Movable Typeのコンテンツデータで公開日を比較する方法を紹介します。

1.はじめに

この記事で紹介するテンプレートは次のとおりです。

コンテンツデータの公開日(年月日)と再構築日(年月日)を比較し、

  • 公開日より再構築日の方が古い場合:「この記事は未来のものです」を表示
  • 公開日より再構築日の方が古い場合:「この記事は過去のものです」を表示
  • 公開日と再構築日が同じ場合:「この記事は現在のものです」を表示

をそれぞれ出力します。

2.テンプレート

コンテンツデータ公開日のタイムスタンプを比較するテンプレートは下記になります。

<$mt:ContentDate format="%Y%m%d" setvar="content_date"$>
<$mt:Date format="%Y%m%d" setvar="publish_date"$>
 
<mt:If name="content_date" gt="$publish_date">
この記事は未来のものです
<mt:ElseIf name="content_date" lt="$publish_date">
この記事は過去のものです
<mt:Else eq="Date">
この記事は現在のものです
</mt:If>

このテンプレートはコンテンツタイプアーカイブに張り付けてください。

3.テンプレートの解説

まず、コンテンツデータの公開日(年月日)を、MTContentDateタグとsetvarモディファイアを使って、変数content_dateに保存します。年月日は数値として比較できるよう、formatモディファイアに"%Y%m%d"を設定し、"20210827"という風にに出力されるようにします。

<$mt:ContentDate format="%Y%m%d" setvar="content_date"$>

次に再構築された年月日を、MTDateタグとsetvarモディファイアを使って、変数publish_dateに保存します。その他は上の設定と同じです。

<$mt:Date format="%Y%m%d" setvar="publish_date"$>

保存した2つの変数を比較します。最初のMTIfタグには次のように設定します。

<mt:If name="content_date" gt="$publish_date">

MTIfタグのnameモディファイアに変数content_date、gtモディファイアに変数publish_dateを設定します。

nameモディファイアに変数を記述するときはそのままでいいですが、gtモディファイアに変数を設定する場合は変数名の前に"$"を付与してください。

これで「変数content_dateの値が変数publish_dateの値より大きいか?」という判定になります。大きい場合はMTIfタグの中の処理を実行し、

この記事は未来のものです

を出力します。

次のMTElseIfタグには次のように設定します。

<mt:ElseIf name="content_date" lt="$publish_date">

MTElseIfタグにはMTIfタグと同じように条件を設定することができます。ltモディファイアにはgtモディファイアと同じように変数の先頭んに"$"を付与します。

これで「変数content_dateの値が変数publish_dateの値より小さいか?」という判定になります。小さい場合はMTIfタグの中の処理を実行し、

この記事は過去のものです

を出力します。

最後のMTElseタグは、上記の2つの判定条件のいずれにもマッチしなかった場合(=2つの変数の値が等しい場合)に実行されます。

<mt:Else eq="Date">

この条件が実行されると、

この記事は現在のものです

を出力します。

4.注意事項

スタティックパブリッシングの場合、MTDateタグの情報を更新させるため、日毎の再構築が必要です。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)