予定日を過ぎたブログ記事を「最近のブログ記事」に表示しない

予定日を過ぎたブログ記事を「最近のブログ記事」に表示しない

Posted at February 1,2010 1:23 AM
Tag:[Customize, Entry, MovableType]

Movable Type 4 以降で、ブログ記事を指定した日程順に並べ、予定日を過ぎたブログ記事は「最近のブログ記事」に表示しないカスタマイズです。完全形ではありませんが、とりあえずアイデアということで紹介します。

1.カスタムフィールドの作成

ブログ記事用のカスタムフィールド「EntryScheduleDate(日付フィールド)」を作ります。このフィールドにスケジュールとなる任意の日付を設定します。

作成したカスタムフィールドのベースネームは、次項の都合で「cf_1」としておきます。

2.インデックステンプレートの作成

次のインデックステンプレートを作成します。このテンプレートはダイナミックパブリッシングを指定します。

<mt:Date format="%Y%m%d" setvar="current_date" />
<mt:Entries limit="5" sort_by="field:cf_1" sort_order="ascend">
  <mt:EntriesHeader>
<div class="widget">
  <h3 class="widget-header">今後のスケジュール</h3>
  <div class="widget-content">
    <ul>
  </mt:EntriesHeader>
<mt:EntryScheduleDate format="%Y%m%d" setvar="entry_date" />
<mt:if name="entry_date" ge="$current_date">
      <li><mt:EntryScheduleDate format="%b月%e日" strip="" />:<mt:EntryTitle /></li>
</mt:if>
  <mt:EntriesFooter>
    </ul>
  </div>
</div>
  </mt:EntriesFooter>
</mt:Entries>

まず、MTDate タグでこのインデックステンプレートの再構築日付(=アクセス日付:年月日)を取得し、変数current_dateに保存します。

次に、MTEntriesタグでブログ記事を処理します。「sort_by="field:cf_1"」と「sort_order="ascend"」を組み合わせて、設定したスケジュール順に表示します。

カスタムフィールドMTEntryScheduleDateタグの日付(年月日)を変数entry_dateに保存し、変数current_date以上、つまり同一日か未来の日付であれば一覧に表示します。

このサンプルでは年月日までの比較ですが、formatモディファイアの値を変更すれば時分秒まで比較可能です。

3.その他

以前に公開した「新着マーク表示」のように、PHPを利用してテンプレートタグを書き換えればスタティックパブリッシングでも動作すると思います。

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


コメントする
greeting

*必須

*必須(非表示)


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

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

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

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