[Movable Type 3.2] ダイナミック・パブリッシングを行うとMT変数をphpの変数に代入できない
よくいますね。自分のミスを怒ってごまかそうとする人 ... 恥。知らなかったなぁ。本日、長年の疑問が氷解しました。既知の仕様だったのですね。
MTにこれから触れる方も多いと思うんで要約を書いときます。ダイナミック・パブリッシングというのは、htmlを動的に吐き出すというMTのクールな機能のひとつです。あたかも「abc.html」という書類にアクセスしているように見せつつも、その書類はじつはサーバに存在せず、php&modrewriteの機能を使って動的にgenerateされるという機能。サイトの再構築が速く、またSEO的にもよろしいということでじつに便利です。導入も簡単。必要な.htaccessは勝手に生成してくれるので、apacheの設定に不慣れな方でも簡単に行えます。(BerkeleyDB環境では使えません)
という便利なダイナミック・パブリッシングなのですが、こんな欠点があったとは知りませんでした。私がマニュアル読まないから悪いんですが。
MT変数というのはMovableType独自のタグで、テンプレートの中で使用するものです。たとえば<$MTEntryTitle$>と書いておくと、エントリのタイトルがそこに挿入されます。今回、私がハマったのは、つまり、「ダイナミック・パブリッシング環境においては、このMT変数によって得られた値をphpの変数に代入することができない」ということだったのでした。ダイナミック・パブリッシングを使うとphpを使えなくなるという意味ではありませんのでお間違えなく。
(例)
<?php
$string = "<$MTEntryTitle$>";
echo $sting;
?>
と書くと、ダイナミック・パブリッシングの場合は、"MTEntryTitle"という文字列が出てきてしまう。スタティックだとそのタイトル名が出力される。
幸いなことに、MTの設定にはそれぞれのテンプレート毎にダイナミックかスタティックかを選べるようになっていますので、これで対処することができました(すべてをスタティックにしなければならぬという事態にはならない)。
マニュアル読まないといかんですね!でもSixApartのヘルプはほんとにわかりにくいんですもん。
※ダイナミックでやりつつこれを回避する裏ワザなんてあるんでしょうか。なんかありそうな気がする。ご存知の方いましたらプリーズ!
このエントリーのトラックバックURL:
http://blog.3ot.net/ping/766

ダイナミックでやりつつこれを行うには、プラグインを自作すればよいのでしょうか。私、オブジェクト指向に不慣れなもので(恥)、それも荷が重いです。