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で同じ結果になるように書いていました)