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 値に「固定文字列」をセットしているものばかりで、項目の値同士を比較する書き方が見つからない。もう少し実践的な例を載せてくれればいいのに。
コメントする