MTタグでグローバルモディファイア(のようなもの)を作る

この記事はMovable Type Advent Calendar 2017の8日目の記事です。

テンプレートを書いている時に出力内容を一定のルールに基づいた整形を行うことが必要になった場合に、 「この案件だけ、今だけ使えるグローバルモディファイアがあったら良いのに...」と思うことがあります。

そんな自体をプラグインを書かずに解決する方法を今回はご紹介します。

...と、ここまで書いた段階でBUNさんの2年前の記事と完全に内容が重複していたので、「見たことあるぞ!」と感じた方は優しい気持ちで見てください。m(__)m

MTSetVarTemplate タグを function のように使ってみる | BUN:Log

サンプルコード

登録

<MTSetvarTemplate name="funcAsb2rel"><MTUnless regex_replace="/\r|\n|\t/gm","">
<mt:var name="_url" replace="http://www.example.jp/","/">
<mt:setvar name="_url" function="undef">
</MTUnless></MTSetvarTemplate>

呼び出し

<mt:var name="funcAsb2rel" _url="置き換えたいURL">

解説

MTVarで標準のモディファイア以外を指定するとMTSetvarTemplate側に値を引き継ぐことができるため、上記のようなコードが動作します。_urlとなっている部分は私が最近使っている独自の表記ルール(一時変数はアンダーバーから始める)なので特に意味はありません。

一回のreplace処理であれば、その都度書けば良いのではないかと思われるかもしれませんが、この部分が複雑になってくると今回のような書き方の恩恵を受けるようになってきます。

使うシーンは限られますが上手く使えると便利なので是非お試しください!