変数(要素)の取得。それは$がネック。

top2010_1214.jpg[<MTCalender month="$thismonths">]でうまくいった出来事。


カレンダーを月別アーカイブの月と連動できないか?
こういう依頼があった。

依頼内容を簡単にまとめると。
indexに表示されているのは今月のカレンダーを表示し。
月別アーカイブの該当のつきクリックした場合は、その月のアーカイブ一覧と
その月のカレンダー情報を表示して、日付を元に掲載内容を把握したい。
というのが今回の依頼の意図。

これ自体は別に難しいことではないと思った。
なぜなら、ArchiveDateを使用して年の4桁と月の2桁を取得して、
それをつなぎ合わせてYYYYMMをつくりCalendarタグのmonthに入れてやれば
すんなり行くことを考えていたからだ。

■ソースだとこんな感じ

<MTSetVarBlock name="thismonths"><MTArchiveDate format="%Y"><MTArchiveDate format="%m"></MTSetVarBlock>

※年と月を変数へ %Y=YYYY %m=mm

<MTCalender month="<MTVar name="thismonths">">

※カレンダーの日付を生成する時に変数を代入


これで、うまくいくはずが・・・最高構築時エラーが!

errerimg.gif
※上記イメージは再現イメージ

「&lt;mtCalendar&gt;タグでエラーがありました: YYYYMM形式でなければなりません。 」


どういうこと?


mtvarを使用して出力内容を確認してみるが、201013とYYYYMMの形式で出力されている。
なにがダメなんだ・・・。まったく分からない。
Google先生に聞いても、これといった解答を得ることはできなかった。

そこでMTQで検索してみるといくつかの検索結果からビンゴ。をひいた。

内容は若干違ったが、同じような疑問をもっている人がいて、返信まで行われている。

■MTQ:カレンダー今月と来月 2ヶ月分を表示

着目点は同じ様な形式で、データを格納した時に「YYYYMM形式のエラー」が出ており、
それを解決する方法だ。

その解決する手段はCalendarタグの部分に$をつけて変数名を書くことで
変数の内の、配列の要素を取得できる。という事だった。

なるほどー!!

目からうろこ。ということで下記のソースにおさまった。

<MTSetVarBlock name="thismonths"><MTArchiveDate format="%Y"><MTArchiveDate format="%m"></MTSetVarBlock>

<MTCalender month="$thismonths">

mtvarを使用して変数する呼び出す方法と、$変数名と書くことで要素を取得する方法の
二つの方法がある事を知った。

これは自分にとってとっても大きな出来事だ。視野が広がった。
偶然にも見つけた要素だが、ここら辺をまとめた書籍とかあれば是非参考にしたいと思った。