ダイナミックパブリッシング時、PHPコード内でMTの値を使う
http://gedima.net/cms/use_mt_tag_in_the_template.html
コチラを参考にしました。
ダイナミックパブリッシングによりPHP化されているページでは、Pealで組まれたMTプラグインは利用できないことが多々あります。
例えば上記カテゴリーリスト中にある「cutbefore」は「Cutstring」プラグインによるものですが、見事にコイツが使えなくなっています。
<ul>
<MTTopLevelCategories>
<li><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel cutbefore="_"$></a></li>
</MTTopLevelCategories>
</ul>
Cutstringによる処理が使えないと困るので、せっかくPHP化されてるってことで下記のようなコードで対応しました。
PHP中では<MTCategoryLabel>といったMTタグが使えないため、「smarty_function_」から始まる形でMT内の値を抜いてきます。
<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>
今回はカテゴリーラベルとアーカイブリンクを引っこ抜いてきて、「Cutstring」の処理に当たる、カテゴリーラベルを先頭4文字削った上で出力しています。
PHP中でMTの値を抜くにはコレ
大事なことなので2回書きました。
$変数名 = smarty_function_[MTタグ名](array(),$this);