MTOS で、ある項目とある項目の内容が同じなら...という条件分岐を[MovableType]
(2010-05-21 15:43:17) by shinoda


MTOS 4 カスタマイズのメモ。

管理画面に開始日と終了日の入力項目を、藤本壱氏制作のプラグインを使った「カスタムフィールドもどき」で追加している。
で、これをブログの詳細画面に表示するときに、「同じ日時が入っていれば、その日時のみを表示」「開始と終了で違う日時が入っていれば、開始日〜終了日と表示」ということがしたいわけだ。

具体的には、
・開始日、終了日にともに「2010-05-21」と入力した時は、「2010年5月21日(金)」と表示。
・開始日に「2010-05-21」と、終了日に「2010-05-23」と入力した時は、「2010年5月21日(金)〜2010年5月23日(日)」と表示。
・・・ということだ。

で、

<$mt:SetVar name="entrydatefield2" value="<$mt:EntryDateField2$>"$>
<$mt:SetVar name="entrydatefield3" value="<$mt:EntryDateField3$>"$>
<$mt:EntryDateField2 format="%Y年%b月%e日(%a)"$><mt:if name="entrydatefield2" ne="$entrydatefield3">〜<$mt:EntryDateField3 format="%Y年%b月%e日(%a)"$></mt:if>

とやってみたのだが駄目。

開始日に「2010-05-21」を、終了日に「2010-05-23」を入力した場合でも「2010年5月21日(金)」しか表示されない。

どうも、$entrydatefield2、$entrydatefield3には何もセットされないようだ。
どちらも空値なので、if ne の条件にはかからないということだろう。

そこで、次のように定義してみた。

<$mt:EntryDateField2 setvar="datafield2"$>
<$mt:EntryDateField3 setvar="datafield3"$>
<$mt:EntryDateField2 format="%Y年%b月%e日(%a)"$><mt:if name="datafield2" ne="$datafield3">〜<$mt:EntryDateField3 format="%Y年%b月%e日(%a)"$></mt:if>

このやり方であればばっちり。

EntryDateField2 及び EntryDateField3 の値が、それぞれ $datafield2、$datafield3 にちゃんとセットされたようだ。

リファレンスマニュアルの if タグの説明は SetVar の value 値に「固定文字列」をセットしているものばかりで、項目の値同士を比較する書き方が見つからない。もう少し実践的な例を載せてくれればいいのに。


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8