TagOverride

  • Posted on
  • by

勢いで書きました。後悔はしてません。
MTML自身で、既存のMTタグの動作を上書きする事ができるプラグインです。使い道はちょっと未知数ですが、なんとなく役に立つ使い方も出来るのでは無いかと言う気がします。役に立つと良いなあ。。。

現在の所、MT5.x 専用です。最新版は、以下のページからダウンロードできます。


このプラグインをインストールすると、以下の二つのテンプレートタグが利用可能になります。

<mt:TagOverride>

タグの動作を上書きするためのブロックタグです。 このブロックの実行後にname属性で指定したタグが呼び出された場合、元々のタグの実行結果の代わりに、このブロックの内側のテンプレートの実行結果が表示されるようになります。

利用可能なモディファイア

name
上書きするタグの名前を指定します。

例: このブロックが実行されると、以降、どのエントリーでも<EntryTitle>タグの実行結果が「トントリー」になります。

<mt:TagOverride name="EntryTitle">トントリー</mt:TagOverride>

利用可能な変数

上書き後にタグが呼び出された場合、そのタグに設定されたモディファイアの値が、変数"args"にハッシュとして設定されています。これらの値を操作/上書きする事で、タグの動作を変更できます。


以下のブロックを実行すると、以降、すべての<mt:Entries>タグのlimitモディファイアが自動的に三倍になり、沢山のエントリーを表示できます。

<mt:TagOverride name="Entries">
    <mt:if var="args" key="limit">
        <mt:setvarblock name="args" key="limit"><mt:var name="args" key="limit" op="*" value="3"></mt:setvarblock>
    </mt:if>
    <mt:SuperTag>
</mt:TagOverride>

<mt:SuperTag>

TagOverrideの内側で、上書き前のタグを呼び出すファンクションタグです。上書き前のタグの実行結果が返ってきます。


以下のブロックを実行すると、以降、すべての<mt:EntryTitle>タグの出力の末尾にidが表示されるようになります。

<mt:TagOverride name="EntryTitle"><mt:SuperTag>(<mt:EntryID>)</mt:TagOverride>

既知の問題

  • 多重にオーバーライドできないようです。