Steamer Lane Studio技術備忘録ム―バブルタイプ

MTで複数時限表示をする際のコード

movable-type MTで複数時限表示をする際のコード
最終更新日: 2023年4月15日

商用サイトで、イベント・キャンペーンの時限表示を組む際、アップしたentrydateや(プラグインによる)unpublishdateとentryheader・entryfooterでは理想的なものが組めないので。

結論から言うと、投稿日はどうでもよく、再構築日・unpublishdateを拾い、phpスクリプトで一番遅く終了する物を選択し、その日付においてそれら情報を入れるボックスの表示・非表示を自動で行う。

<?php
$foo = max( array(<mt:Entries include_blogs="all" categories="○○" glue=","><$MTUnpublishedDate format="%Y%m%d%H%M%S"$></mt:Entries>) )."\n";
$bar = max( array(<mt:Entries include_blogs="all" categories="○○" glue="," lastn="10"><$MTEntryCreatedDate format="%Y%m%d%H%M%S"$></mt:Entries>) )."\n";
?>
<?php
$start_date = $bar;
$end_date = $foo;
?>
<? if( date("YmdHis") >= $start_date && date("YmdHis") <= $end_date ) { ?>

<div>//////入れ子ボックス

<mt:Entries include_blogs="all" categories="○○">
<mt:setvarblock name="ent_cat"><MTEntryPrimaryCategory><mt:CategoryLabel></MTEntryPrimaryCategory></mt:setvarblock>
<?
$start_date = date('<$MTEntryCreatedDate format="%Y%m%d%H%M%S"$>');
$end_date = "<$MTUnpublishedDate format="%Y%m%d%H%M%S"$>";
?>
<? if( date("YmdHis") >= $start_date && date("YmdHis") <= $end_date ) { ?>
/////出したい投稿内容////
<mt:UnpublishedDate format="%b.%e">////これ終了日表示/////
<? } else { ?>
<? } ?>
</mt:Entries>
</div>
<? } ?>

これで告知日と終了日の如何に関わらず、サーバーサイドスクリプトにより非表示が可能。
start_dateの呼び出し様によっては、日時による自動表示も可。