ダイナミックパブリッシング時、PHPコード内でMTの値を使う

http://gedima.net/cms/use_mt_tag_in_the_template.html
コチラを参考にしました。

ダイナミックパブリッシングによりPHP化されているページでは、Pealで組まれたMTプラグインは利用できないことが多々あります。


<ul>
<MTTopLevelCategories>
<li><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel cutbefore="_"$></a></li>
</MTTopLevelCategories>
</ul>
例えば上記カテゴリーリスト中にある「cutbefore」は「Cutstringプラグインによるものですが、見事にコイツが使えなくなっています。
Cutstringによる処理が使えないと困るので、せっかくPHP化されてるってことで下記のようなコードで対応しました。


<ul>
<MTTopLevelCategories>
<?php
$categoryLabel = smarty_function_MTCategoryLabel(array(),$this);
$archiveLink = smarty_function_MTCategoryArchiveLink(array(),$this);
$label = substr($categoryLabel, 4);
print "<li><a href='$archiveLink'>$label</a></li>";
?>
</MTTopLevelCategories>
</ul>
PHP中では<MTCategoryLabel>といったMTタグが使えないため、「smarty_function_」から始まる形でMT内の値を抜いてきます。
今回はカテゴリーラベルとアーカイブリンクを引っこ抜いてきて、「Cutstring」の処理に当たる、カテゴリーラベルを先頭4文字削った上で出力しています。



PHP中でMTの値を抜くにはコレ


$変数名 = smarty_function_[MTタグ名](array(),$this);
大事なことなので2回書きました。