MovableTypeのlikeモディファイアって正規表現使えるのね!

MovableType5がそろそろ出荷されるというのにMovableType4を触りだした。今更かよーと思われる方も多いでしょうけど。
いやー、MovableType4ってブログのシステムじゃないですね、これ。マジCMSで使えるわ。


ってなわけで同じカテゴリーのエントリーの一覧を出したいときはこんな感じで書くんだけど…

<mt:setvarblock name="entrycategory"><$mt:EntryCategory$></mt:setvarblock>
<ul>
	<mt:Entries category="$entrycategory" lastn="10">
		<li><a href="<$mt:EntryPermaLink$>"><$mt:EntryTitle$></a></li>
	</mt:Entries>
</ul>

運営にちょっと(?)関わっている「日刊デジタルクリエイターズ公式ブログ」のエントリーはカテゴリーで著者が設定されているので上記のテンプレートを実行すると、メールマガジン本体のエントリーとメールマガジンの著者毎のエントリーをともに含んでしまいます。


なのでメールマガジン本体の場合はタイトルの先頭に必ず発行号数の「[○○○○]」があることを利用して以下のように書くことでメールマガジン本体だけを排除しました。

<mt:setvarblock name="entrycategory"><$mt:EntryCategory$></mt:setvarblock>
<ul>
	<mt:Entries category="$entrycategory" lastn="20">
		<mt:setvarblock name="var_title"><$mt:EntryTitle$></mtsetvarblock>
		<mt:unless name="var_title" like="^\[">
			<li><a href="<$mt:EntryPermaLink$>"><$mt:EntryTitle$></a></li>
		</mt:unless>
	</mt:Entries>
</ul>

何をやっているのかというと、4行目のmt:setvarblockタグでvar_titleという変数にエントリーのタイトルを入れてます。
次の行でvar_titleの変数の中身が正規表現で「^\[」ではない場合、次の行を実行するようにしています。
正規表現で「^\[」は分解すると「^」=先頭に、「\[」=「[」がある([は正規表現では特殊記号なので「[」を表したい場合は「\」を付けて「\[」と表現します)という感じですかね。


ここで「\[」って書いてあると「[」があるものすべてなので「[1234]本日のレシピ」も「映画のお話[123]」も該当してしまいます。
日刊デジタルクリエイターズのメールマガジン本体は「[1234]本日のレシピ」のタイプで、著者毎のエントリーは「映画のお話[123]」というタイプなので、「^\[」とするわけです。


今までifとかunlessとかの条件分岐ってほとんど使ったことがなかったんだけど、わかると結構使えるのかもなぁ。
(なお今までは上記テンプレートの部分をJavaScriptで同じ結果になるように書いていました)