各ブログ記事には「関連するブログ記事」として指定したエントリー・タグを持つ記事のリストを載せています。新規に記事を公開した場合は当然その記事よりも古い記事のリストとなるのですが、単に<mt:Entries tags="エントリー・タグ">とすると、過去記事の修正を行った場合にはその記事よりも新しい公開日時の記事までリストに含まれる形で更新が行われてしまいます。
対象の記事より古い記事のみをリスト化する為には、当該記事の公開日時と同じエントリー・タグを持つ関連記事の公開日時を比較する必要が出てきます。所が、<mt:EntryDate>同士を<mt:If>で比較するだけではうまく日時の比較が出来ませんでした。
それはMovable Typeでの日時は文字列となっていて、例えば比較する月の値が1桁と2桁が混在した状態では正常な比較が出来ないようです。従って、比較する前に比較する2つの日時の表示形式を揃えて置く必要があるようです。
-
正常に比較できない例
(編集中のエントリー) <mt:EntryDate setvar="val_A"> ~ (関連するエントリー) <mt:EntryDate setvar="val_B"> ~ <mt:If name="val_B" lt="$val_A"> ~ リストの編集処理 ~
-
正常に比較できた例
(編集中のエントリー) <mt:EntryDate format="%Y%m%d%H%M%S" setvar="val_A"> ~ (関連するエントリー) <mt:EntryDate format="%Y%m%d%H%M%S" setvar="val_B"> ~ <mt:If name="val_B" lt="$val_A"> ~ リストの編集処理 ~
年4桁、月・日・時・分・秒をそれぞれ2桁に合わせた上で比較しています。
javascriptとは違うので意外な落とし穴かも知れません。
コメントする