• Movable Typeのダイナミックパブリッシングで
    PHPコードを書くときにハマったこと

    毎度ながら、すっかりご無沙汰なBUNです。
    みなさんお元気ですか?(。-_-。)

    小ネタはストックしてあるものの重い腰がなかなか上がらなかったのですが、Movable Type Advent Calendar 2012 の19日目の記事として、半強制的に書くことにしました。

    文体すら忘れかけてるので、サクッと短めに www

    さて、先日「スタティック」として実装済みのテンプレートを「ダイナミックパブリッシング」に変更する必要に駆られました。導入しているプラグイン自体の影響を受けることは考えられなかったため、当初「公開を切り替えるだけで大丈夫だろう」と思っていたものの、実際に設定してみると出力先のURLは真っ白に。。。

    調べてみたところ、テンプレート内にPHPのコードを記述していたのが原因でした。
    このとき初めて知ったのですが、ダイナミックパブリッシング用のテンプレートにPHPのコードを書く場合は、Smartyの記法で書かないといけないのですね。

    という訳で、下記のように変更したところ、とりあえず真っ白な画面ではなくなりました。
    Movable Typeでは、Smartyのデミリタが2重の中括弧になります。

    変更前のコード
    <?php include('header.php'); ?>
    
    変更後のコード
    {{php}} include('header.php'); {{/php}}
    

    次に問題になったのが、PHPの変数に直接MTタグを代入している箇所でした。

    前述のように{{php}}{{/php}}で囲むだけではダメで、一旦captureにセットしてからget_template_vars関数でPHPの変数に代入できました。

    変更前のコード
    <?php $title = '<$mt:EntryTitle$>'; ?>
    
    変更後のコード
    {{capture assign="entry_title"}}<$mt:EntryTitle$>{{/capture}}
    {{php}}$title = $this->get_template_vars('entry_title');{{/php}}
    

    これまでダイナミックパブリッシングをなんとなく避けてきたBUNでしたが、
    これくらいの調整で済むのであれば、使い出がありそうかなと。

最近のコメント

  • 2013.01.27 16:32 Natiのコメント: 菊田さん、ありがとうございます!当日はよ
  • 2013.01.26 14:48 菊田裕志のコメント: こんにちは。伊達市からの参加です。よろし
  • 2011.03.09 09:27 BUNのコメント: コメント、ありがとうございます! 時間を
  • 2011.03.09 05:34 匿名のコメント: インストールしようとしたところ、Exte
  • 2011.03.01 17:54 BUNのコメント: > 920さん ありがとうございます。
  • 2011.02.28 23:57 920のコメント: タグ使えるかどうか分からなかったので、
  • 2011.02.28 23:39 BUNのコメント: > 920さん なるほど。 mt:Fo
  • 2011.02.28 23:02 920のコメント: 早速ありがとうございます。 ところで、
  • 2011.02.28 20:11 BUNのコメント: > 920さん 大変失礼しましたー(汗)
  • 2011.02.28 19:53 920のコメント: 接頭辞に「._ 」が付いたファイル(Ap