MovableTypeで、イベント一覧、イベントスライダー、過去のアーカイブを表示させたい。
イベント終了日を過ぎたら、対象のイベントを自動で非表示にしたい。
過去アーカイブページにはイベント終了日後のイベントも掲載したい。
どうすれば、実現できるのか、検証してみました。
開催中のイベントのみ取得し表示する
MovableType標準機能の「公開終了日」で記事を非公開にできますが、過去のアーカイブとして表示させたい場合の対応ができません。
記事を非公開にするのではなく、カスタムフィールドで「イベント終了日」を設定して、表示をコントロールする必要があります。
開催中のイベントの判断は、「イベント終了日」が過ぎていない記事を表示する必要があります。
しかしながらMovableTypeでは、日付を比較し、必要な記事のみ取得することが難しいようです。
※movabletype.netではできるようです。
カスタムフィールドを使ってイベントの開催日で記事を並び替える方法
PHPでイベント終了日を比較する
処理対象のテンプレートの拡張子をphpに変更します。
一旦、MovableTypeで、想定される件数をMTタグでイベント記事を取得。
PHPで多次元配列に格納して、「イベント終了日」と、「現在日時」を比較して、記事を再取得し表示させます。
PHPのarray_multisortでソートすると便利です!
MovableTypeでPHPを利用すると、WordPressでもいいような気がしますが・・・。
公共系の案件なので…
※追伸)上段にも記載しましたがmovabletype.net様のサイトで以下の解決方法が記載されていました。
カスタムフィールドを使ってイベントの開催日で記事を並び替える方法
カスタムフィールドの日付を比較する方法はプラグインを利用しないと以前は無かったような気がしますが・・・
もしかしてmovabletype.net版だけの機能?
パッケージ版の場合は、ダイナミックパブリッシングにしなければ、リアルタイムで動いませんので動作検証が必要ですね!
コメント