変数(要素)の取得。それは$がネック。
[<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">">
※カレンダーの日付を生成する時に変数を代入
これで、うまくいくはずが・・・最高構築時エラーが!
※上記イメージは再現イメージ
「<mtCalendar>タグでエラーがありました: YYYYMM形式でなければなりません。 」
どういうこと?
mtvarを使用して出力内容を確認してみるが、201013とYYYYMMの形式で出力されている。
なにがダメなんだ・・・。まったく分からない。
Google先生に聞いても、これといった解答を得ることはできなかった。
そこでMTQで検索してみるといくつかの検索結果からビンゴ。をひいた。
内容は若干違ったが、同じような疑問をもっている人がいて、返信まで行われている。
■MTQ:カレンダー今月と来月 2ヶ月分を表示
着目点は同じ様な形式で、データを格納した時に「YYYYMM形式のエラー」が出ており、
それを解決する方法だ。
その解決する手段はCalendarタグの部分に$をつけて変数名を書くことで
変数の内の、配列の要素を取得できる。という事だった。
なるほどー!!
目からうろこ。ということで下記のソースにおさまった。
<MTSetVarBlock name="thismonths"><MTArchiveDate format="%Y"><MTArchiveDate format="%m"></MTSetVarBlock>
<MTCalender month="$thismonths">
mtvarを使用して変数する呼び出す方法と、$変数名と書くことで要素を取得する方法の
二つの方法がある事を知った。
これは自分にとってとっても大きな出来事だ。視野が広がった。
偶然にも見つけた要素だが、ここら辺をまとめた書籍とかあれば是非参考にしたいと思った。