Mar 01
2008
SetVar、GetVarがわからない僕へ ~Movable Type 4.1 テンプレート読解第1回
- Category:Movable Type > Movable Type 4.1
- Tags:Movable Type MTタグ MTテンプレート
最初に
MT4からはタグの書き方の自由度が増しました。
<$MTEntryTitle$> <$MTEnTRyTitle$> <$mtentrytitle$> <mt:entrytitle />
以上4つの書き方全てがMTタグとして有効です。要するに「小文字大文字織り交ぜてもいいぞ」、ということと新たに「mt:」という表記方法も増えたっちゅーことですね。
MT4.XのStage1のボス、SetVar/GetVar
SetVarとGetVar。よくわかんないですよねー。MT4.X系にアップグレードしたあと、テンプレートを覗いて途方にくれました。つい最近、HTML/CSSが読めるようになっただけで天狗になっていた僕にとっては、暗号以外の何者でもありませんでした。頼りのMovable Type 4 ドキュメントにも解説少ないし・・。
とりあえずSetVarとGetVarって何の略?
Varとはvariable(変数)の略だそうです。変数を「セット」したり「ゲット」したりするわけですね。ポケモンげっとだぜ!
変数に名前をつけて値をセットしよう!
<$MTSetVar name="inu" value="taro"$> - (1)
以上の記述をMTテンプレート内でした場合。「inu」と名前をつけた変数には「taro」という値をセットしてあげる!ってことになります。タロ・ジロ!
セットしたらいつでも取り出せる!
で、SetVarはGetVarとセットで使うべしとのこと。Setしたのなら活用したいですよね。そんな時にGetVar
(※注 MTGetVarとMTVarは同義!もちろんMTVarとmt:varも同義!つまりMTGetVarとmt:varは同義!!)
(1)のような記述をした上で
<$MTGetVar name="inu"$>
または
<mt:var name="inu">
とテンプレートに書き込んだら、構築後のHTMLファイルにはなんと!
taro
と出て来るのです!。ふーんって感じですよね。それなら最初から「taro」と書けよ、と。思いますよね!
value="1"ってなんだよ!ヽ(`Д´)ノ
<$MTSetVar name="main-index" value="1"$> - (2)
というもの。テンプレートを覗いてみると、こんな調子の記述がぽんぽん出てきます。僕の場合これで躓きました。さっきの例で行くと「main-index」と名前をつけた変数には「1」という値をセットしてあげるって読めますよね。うーんだからなんなんだろ、といった感じでした。
じゃあGetVarしてやらないと!値を取り出さないと!(心の叫び)
でも今回は取り出さないんです。
MTテンプレートの中で(2)のような「値を1とセットする」記述は「テンプレートを判別するのに」使います。後述しますが「if / Unless / Else」といったものを使うときに活きてきます。
(2)は「このテンプレートでmain-indexという名の変数は有効か?はい、そうです!」と宣言することになります。
判別する、とは・・・?
ここで「if / Unless / Else」の出番です。
(2)とテンプレート内に記述した上で
<mt:if name="main-index"> <!-- do something --> </mt:if>
こういった記述をしたら。「main-indexという変数の値が0以外の場合は実行しちゃうよ~」という意になります。(2)では値を「1」をセットしてるので実行するわけです。
少し複雑に
<mt:if name="main-index"> <h1 id="header-name"><a href="<$MTBlogURL$>" ><$MTBlogName$></a></h1> <mt:else> <div id="header-name"><a href="<$MTBlogURL$>"><$MTBlogName$></a></div> </mt:if>
こうなると、
「もしこのテンプレートでmain-indexという変数が有効なら(値が0以外なら)<h1>つらつら、もしそうでないならば<div>つらつら」
となります。デフォルトテンプレートでmain-indexについて値が1とセットされているものは「メインページ」のみです。メインページではブログタイトルはh1要素でくくってそれ以外のテンプレート、例えばブログ記事テンプレート(旧エントリー・アーカイブ)ではブログタイトルはdiv要素でタギングしています。個別エントリーページでは、記事のタイトルがh1要素でタギングされることとなります。
ブロックタグにもなるよ
つぎに「MTSetVarBlock」。他の書き方をしてみると「mt:setvarblock」等ですかね。これは値をセットしようにもダブルクォーテーションの中に書くには適切でない場合(例えばMTタグなどはダブルクォーテーションの中に記述できません)に「MTSetVar」がブロック化したものです。例えば以下のように使います。
<MTSetVarBlock name="html_head"> <link rel="alternate" type="application/atom+xml" title="Atom" href="<$MTLink template="atom"$>" /> </MTSetVar>
「html_head」という変数の値を「<link rel="alternate" type="application/atom+xml" title="Atom" href="<$MTLink template="atom"$>" />」としますよ、と。
<MTGetVar name="html_head">
とMTテンプレートに記述すると
<link rel="alternate" type="application/atom+xml" title="Atom" href="<$MTLink template="atom"$>" />
と出力されるわけですね。
とりあえず今日はここまで!
参考ページ
小粋空間: Movable Type 4 のテンプレート構造
Movable Type 4 的テンプレート管理 上之郷谷太一 - Six Apart (注 pdfファイルです)
- Trackback URL

Leave Your Words