【Movable Type】テンプレート内のphp内部でMTタグを使う方法

  ダイナミックパブリッシングを使っている場合にテンプレート内でphpを使っても、php内部ではMTのタグが使えなかった。
  テンプレート内にphpを記述するというのはおかしな話だけど、色々訳あって何とかして実装してみたかった。

  このたびやり方がわかったので、こっそりメモ。
以下のようにすれば、エントリーが所属しているカテゴリー名を出力させることができた。
同じように、smarty_function_MTTagName(....とすれば、他のタグも使用できそう。

<?php
$MTEntryCategory=smarty_function_MTEntryCategory(array(),$this);
echo $MTEntryCategory;<br>
?>

2006-01-05 10:52:00

口コミ・コメント

Small on 2010-04-16 00:03:19
はじめまして、こんばんわ。 「テンプレート内のphp内部でMTタグを使う方法」とても参考になります。 しかし、私のMTではエラーが出てしまいます。 友人のMT(4.13?)では $変数 = smarty_function_MTEntryKeywords(array(),$this); はきちんと動いているようですが、私のMTでは 「Fatal error: Call to undefined function smarty_function_MTEntryKeywords() in C:\インストール先\php\extlib\smarty\libs\Smarty.class.php(1936) : eval()'d code on line 4」 というエラーが出てしまいます。 $変数 = smarty_function_MTEntryBody(array(),$this); $変数 = smarty_function_MTCategoryLabel(array(),$this); 等きちんと表示されるものもあります。 私の環境 MT(4.261) MySQL(5.1) PHP(5.29) 友人の環境 MT(4.13?) SQLite(?) PHP(5.?) 原因わかるでしょうか? (Smarty.class.phpの1936行目のevalに渡している$codeが問題のようですが、$codeがどのような値になっているのか確認方法がわかりません。エラーが出る部分の$codeだけをechoを使って表示させたくてもページ全体が1936行目のeval()を通るようですべてのソースが表示され理解できません。) この方法はGEDIMAさんが一番初めに考案されたようで、一番詳しいのではないかと思っているので、なんとかご教授ください。 お願いします。 あと、カスタムフィールドのデータを抜くことはできますでしょうか?

コメントを書く