linkerは「人と人」「人と情報」「人と物」をつなぐデザインユニットです。

MTタグの値に文言を追加して出力する方法のメモ

みなさん、こんにちは、まーしーです
この週末からサマータイムが始まり日本との時差は8時間になりました。最近は朝も真っ暗じゃないので少しは仕事もはかどりそうです。

さて、Movable Typeをつかってサイトを構築しているときに、MTタグで何かしらの値を出力する際に文言を追加して出力したい場合などがあるかもしれません。

<p>タイトル:"linker journal"</p>

みたいなものを出したくて、このタイトル情報が各ブログ記事のタイトル欄に入力されていた場合は

<p>タイトル:"<$MTEntryTitle$>"</p>

とMTのテンプレートに書けば問題無く出力されますね。

値が必ずしも無い場合はMTIfでタグの内容を判定

MTEntryTitleの値が無い場合はないですが、値、フィールドの種類によっては値が無い場合もあるでしょう。
その場合

<p>タイトル:"<$MTEntryTitle$>"</p>

と書いてあると

<p>タイトル:""</p>

と出力されてしまってマズイですね。なのでこれを回避するためには

<MTIf tag="EntryTitle"><p>タイトル:"<$MTEntryTitle$>"</p></MTIf>

とMTIfでtagの値を判定して書く形になります。
まぁ、MTElseもいれて値が無い場合の条件なども入れたりするでしょう。

catモディファイアを使ってタグの後に値を追加する

値の有無を抜きにして、テンプレートタグの出力に定型文を付与して出力することは可能です。
グローバルモディファイアのcatを使う方法です。

cat | グローバル・モディファイアリファレンス
http://www.movabletype.jp/documentation/appendices/modifiers/cat.html  

これを使うと

<p>タイトルは<$MTEntryTitle cat="です"$></p>

というMTテンプレートは

<p>タイトルはlinker journalです</p>

といった形で出力することが可能になります。

regex_replaceモディファイアを使って前後に出したい

catモディファイアは後ろにしか追加出来ません。使う場合は前にも出したいという場合もあるでしょう。
そういうときはregex_replaceモディファイアを使って解決します。

タイトルは<$MTEntryTitle$>です

という文言を出したい場合

<$MTEntryTitle regex_replace='/^/','タイトルは' regex_replace='/$/','です' $>

という感じで、regex_replaceモディファイアを二度書くことで出力することが可能です。
ただし、この方法も先ほどのcatモディファイアを使った場合も値が入っていなくても指定した文言は出力されてしまいます。

タイトルはです

先ほどのMTIfで条件分岐するかどうかという方法になりますがregex_replaceを書く際に正規表現を使って

<$MTEntryTitle regex_replace='/^(.+)$/','タイトルは$1です' $>

と指定すれば値が無い場合は何も出力されません。

ということで

素直にMTIfタグを書く方がいいかもしれませんが、使い方次第ということで書いておきました。