MT/カテゴリーのページ分割〜php化〜
Oct 16, 2004
CategoryArchiveをページ分割するためには、php化が必要ということで、まずはCategoryArchiveのphp化を行う。
php化については、以下のサイトを参考にさせていただいた。
- "MovableTypeのページ分割/Permalinkの変更"(ARTIFACTさん)
- "カテゴリ一覧を分割表示に変更"(野良犬の塒さん)
- "カテゴリページの分割とPHP化+α"(えむいち。〜さくさくさくらたんどっとこむ版〜さん)
- "出力ファイルのパーミッション変更"(Luna Squareさん)
php化するには、MT管理画面にある「アーカイブの設定」でphp化したいアーカイブ(今回はCategoryArchive)のファイル名の拡張子を.htmlから.phpに変更するだけなんだけれど、さくらインターネットの場合にはphpファイルに実行属性を付けなければ動作しないそうな。
さくらインターネットでのphp化の具体的な手順は次の通り(MovableType 3.01D-jaの場合)。
- mt.cfgをエディタで開いて、143行目の
# HTMLUmask 0022、145行目の# DirUmask 0022、157行目の# HTMLPerms 0777の部分のコメントアウトを外す(#を削除) - FTPクライアントでサーバに転送(もちろんテキストモードで)
- MT管理画面にあるウェブログの設定→アーカーブの設定を開き、下の方にあるCategroyArchiveの「アーカイブ・ファイルのテンプレート」という項目欄でファイル名の拡張子をphpに変更(.html→.php)して再構築する
ffftpなどのFTPクライアントで各ファイルの実行属性を755(もしくは705)に変更してやれば一応動作するんだけれど、再構築をするたびに実行属性が消えてしまって面倒なので、常に実行属性を付けるために、mt.cfgを少しだけ修正するというのが、さくらインターネットのサーバでphp化するために必要な作業となる。
ファイル名の変更については、参考にさせていただいたサイト様は<$MTArchiveCategory dirify="1"$>にすると説明されているが、これは各カテゴリーの名前に日本語が使われている場合にファイル名が重複するのを避けるため。
うちの場合、元々カテゴリー名に英数字しか使っていないので、以前変更したファイル名<$MTCategoryLabel lower_case="1"$>_index.phpでも構わない("MT/アーカイブのファイル名を変更"参照)。
これでphp化完了・・・と思ったら実際にアクセスしてみると、Parse error: parse error, unexpected T_STRING in [...] on line 1というエラーが出てしまった。
これで随分悩むことになったんだけれど、いろいろ調べてみるとテンプレートの最初の行にxml宣言があることが原因らしい。
XHTMLでは、文字コードがUTF-8やUTF-16以外の場合、xml宣言を省略できないので、各アーカイブ(テンプレート)に <?xml version="1.0" encoding="<$MTPublishCharset$>"?>を追加しているんだけれど、phpではこれがエラーとなってしまう。
"PHPでMovable Type" (Chitatopopsさん)によると、xml宣言の部分を <?php echo '<?xml version="1.0" encoding="<$MTPublishCharset$>"?>'."\n" ?>とすれば良いとのことで、実際にやってみたところ上手くいった。
- Author:かんきち
- 18:09
- MovableType
- Comments(4)
- Trackbacks(14)
Comments
以下のリストはエントリー「MT/カテゴリーのページ分割〜php化〜」へのコメントです。
PHP化がうまくいかずに悩んでいたところ、ここの記述どおりにしたらうまくいきました。
とても感謝です!!
ももぱぱさん、コメントありがとうございます。お役に立てたようで何よりです。
貴重な情報ありがとうございました。
私もMTをPHP化しようとした人間の1人です。ですが、いろんなページの説明どおりにやっても、Parse error: parse error, unexpected T_STRING in [...] on line 1が出てくるので途方にくれておりました。
貴殿のブログの記載を参考に1行目を書き換えたところ問題なく表示ができました。本当にありがとうございました。
sousekiさん、コメントありがとうございます。お役に立てたようで何よりです。