MovableType: 2010年5月アーカイブ

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

う~む、とうとう本体に手をつけてしまった。

MovableType のエントリー項目のひとつである「公開日」。この時間のところに、(通常は現在時刻がセットされるのだが)例えば 09:00:00 のような固定値をセットしておいてほしい・・・という要件があったので、とうとう lib/MT/CMS/Entry.pm に手を付けてしまった。

        $param->{authored_on_time} = $q->param('authored_on_time')
          || POSIX::strftime( "%H:%M:%S", @now );

としているところを、

        $param->{authored_on_time} = $q->param('authored_on_time')
          || '09:00:00' ;

と。

ささやかな変更なんだけど、こういうことをしちゃうと、バージョンアップの度に同じ変更を加えてやらないといかんからなあ・・・

カスタムフィールドで「公開開始日」っての作って、edit_entry.tmplを修正して元の「公開日」を隠しちゃおうかとも思ったが、そしたら静的コンテンツの作成のところの判断条件触らないといけなくなっちゃうし、そっちの方が大ごとになるのでやめた。

こういう、MovableType の元からある項目をカスタマイズする時、Entry.pm とか触らずにプラグインとかでどうにか出来る手があれば、是非ともご教示くださいませ>識者の方

まあ、今回は時間もないし、これでいくけどねぇ。

このアーカイブについて

このページには、2010年5月以降に書かれたブログ記事のうちMovableTypeカテゴリに属しているものが含まれています。

前のアーカイブはMovableType: 2010年4月です。

次のアーカイブはMovableType: 2010年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら