Movable Type 4 で PHP 化する時の注意事項

Movable Type 4 で PHP 化する時の注意事項

Posted at December 21,2007 1:33 AM
Tag:[MovableType, MTUnless, PHP]

Movable Type 4.0~4.1 では、「ヘッダー」「フッター」「サイドバー」等、各ページで共通的に使える部分を「テンプレートモジュール」として定義しているので、一ヶ所を修正して再構築すれば全ページに反映されるという、いわゆる「保守性」が向上しました。

しかし、PHP 化を行っている場合、「ヘッダー」テンプレートモジュールに PHP スクリプトが記述されていると、PHP 化の対象とならない「システムテンプレート(コメントプレビュー/コメント完了/検索結果)」にも PHP スクリプトが表示されてしまうため、期待しない表示になるケースがあります。

以下、システムテンプレートで PHP スクリプトを表示しない回避策を示します。

1.基本

PHP スクリプト全体を、下記のように MTUnless タグで括ります。

<MTUnless name="system_template">
    :
  [PHP スクリプト]
    :
</MTUnless>

とする必要があります。name 属性の system_template はお分かりのようにシステムテンプレートであることを示す変数で、この条件を満たさない場合、つまりシステムテンプレートでない場合のみ、MTUnless タグのブロックを実行します。

代表的な例として、ヘッダの先頭(=ページの先頭)に

<? php echo('<?xml version="1.0" encoding="utf-8"?>'); ? >

がある場合は、

<MTUnless name="system_template">
<? php echo('<?xml version="1.0" encoding="utf-8"?>'); ? >
</MTUnless>

としてください。

注:実際に使用する場合は、リストの改行をすべて除去して1行にしてください。

2.応用

PHPスクリプトの内部に、システムテンプレートでも表示させたい内容がある場合は、MTUnless タグを PHP スクリプトに部分的に適用します。

例えば、1項の XML 宣言の対処では、システムテンプレートに XML 宣言が表示されません。これを表示させたい場合は次の2つの方法があります。

2.1 PHP スクリプトを部分的に MTUnless タグで括る

システムテンプレートで実行させたくない部分だけを MTUnless タグで括ります。

<MTUnless name="system_template">
<? php echo('
</MTUnless>
<?xml version="1.0" encoding="utf-8"?>
<MTUnless name="system_template">
'); ? >
</MTUnless>

注:実際に使用する場合は、リストの改行をすべて除去して1行にしてください。

2.2 MTElse タグを利用する

MTElse タグを利用して、MTElse タグブロック内部には、システムテンプレートで表示させたい内容を再掲します。

<MTUnless name="system_template">
<? php echo('<?xml version="1.0" encoding="utf-8"?>'); ? >
<MTElse>
<?xml version="1.0" encoding="utf-8"?>
</MTUnless>

注:実際に使用する場合は、リストの改行をすべて除去して1行にしてください。

3.注意事項

system_template という変数は、各システムテンプレートの先頭に

<MTSetVar name="system_template" value="1">

という形で記述されているものを利用しています。

独自にテンプレートを作成されている場合は、各システムテンプレートの先頭に上記の MTSetVar タグが記述されていることを確認し、記述されていない場合は追加してください。

2008.10.07
バージョンを 4.0~4.1 に限定しました。

関連記事
トラックバックURL


トラックバック

PHP化とPerl版ダイナミック・パブリッシングの導入 from shintata.com @Movabletype
MovableTypeを使う人なら大抵やってるだろうけど、このブログもPHP化... [続きを読む]

Tracked on October 7, 2008 1:07 AM

テンプレート変更。 from ふにふに日記。
小粋空間さんのテンプレート... [続きを読む]

Tracked on March 25, 2009 9:57 AM
コメント

いつもお世話になります。
こちらのMT4用テンプレートのカスタマイズをしているのですが、
うまく動作しない部分があり、ご教授いただければと思います。

① トップページにjavaスクリプトを

 1.画像が横に流れる → 2.天気予報 → 3.アソシエイトの順に入れたところ、

1.の画像スクリプトが、画像が表示されるのみで動作しなくなりました。
ただ、適当なところで一度クリックすると画像が動き出します。
最後に入れたアソシエイトをトップページからはずすと正常に動作するようです。
スクリプト同士の相性(?)みたいなものがあるのでしょうか?

② サイドバーのメニュー(カテゴリー)をクリックすると、
カテゴリー別ページのサイドバーの表示が正しくありません。
ただ、こちらもサブカテゴリーだと正常に表示されます。

PHP化をしているのですが、
カテゴリーページは .html で吐き出され
サブカテゴリーページは .php で吐き出されていて、
このあたりが原因?

もしくは、アーカイブマッピングの設定が違っている?
と思うのですが、いろいろ調べてみても対処法がわかりませんでした。

まだ、カスタマイズ途中のサイトですが、URLを入れておきますので、
ご覧いただければ幸いです。

「MT WEBデザインの新しいルール」愛読させていただいております。
MT4がリリースされてすぐにチャレンジしてみたのですが、
???で、待ちに待った発売でした。

MT4は難しいですねぇ、その分、複雑な設定ができるのだとは思うのですが。。

なにとぞ、よろしくお願いいたします。m( __ __ )m

[1] Posted by chinop : January 11, 2008 11:49 AM

たびたびすみません。おかげさまで解決できました。
PHP化するときに、失敗して

index.html と index.php

の両方が作成されていたのが原因のようです。

ありがとうございました。今後ともよろしくお願いします。m( __ __ )m

[2] Posted by chinop : January 11, 2008 2:39 PM

>chinopさん
こんばんは。
ご質問の件、自己解決されたようでよかったです。
またなにかございましたらご連絡ください。
ではでは!

[3] Posted by yujiro logo : January 12, 2008 11:51 PM

こんばんわ。
お忙しいところ、いつも返信コメントありがとうございます。

実は、自己解決できたと思っていたのは②のみで、①のJavaスクリプトについては解決していませんでした。。(/_<。)グスン

自分のPC(IE6)ではちゃんと表示されているのですが、別のPCで見ると画像が乱れたり(切れる・重なる・飛ぶなど)、IE7では全く表示されていないようです。

スクリプトの配布先の方にもアドバイスをお願いしたところ、

>私はIE7なんですが 全く何も表示されません。ためしに他のブラウザもいくつか使いましたがどれも表示なしです。スクリプト自体はIE7で表示されていますが・・

とのご回答をいただきました。他につけた天気予報などのスクリプトも表示されたり、途中で切れたりしています。何か対策はありますでしょうか。
MT3のときは、スクリプトをつけても何も問題がなかったので、MT4との相性の問題であれば、MT3に戻したいとも考えています。

MT4の問題であれば、バージョンアップの逆(前バージョン)に戻す方法を教えていただけるとありがたいです。

なにとぞよろしくお願いいたします。m( __ __ )m


ご参考までに、設置javaスクリプト>画像が流れる
http://myako.net/java4/asan/nagare.html

[4] Posted by chinop : January 14, 2008 12:58 AM

>chinopさん
こんばんは。
ご質問の件ですが、ページのデータをお借りして、スクロールスクリプト以外の全ての情報(XML宣言・html要素・head要素・body要素は残してます)をページから削除してもIE6でしか表示されませんでした。
なおIE6では1行目のXML宣言がないと表示されないようです。
上記の内容をスクリプト配布元にご連絡ください。
それではよろしくお願い致します。

[5] Posted by yujiro logo : January 16, 2008 10:43 PM

コメントありがとうございます。
いつもこちらで勉強させていただいてます。
記事を書いた後、もしかして僕が導入したvicuna CMS(http://vicuna.jp/)のテンプレートがそうなってるだけで、デフォのテンプレートは手を加えなくちゃいけないのかも?とか色々考えちゃいました。
旧バージョンのことまで対応しなくちゃなんて大変ですよね…。
今後も参考にさせていただきます。

[6] Posted by shintata : October 7, 2008 12:06 PM

>shintataさん
こんにちは。
こちらこそ失礼致しました。
記事の対応バージョンの表記については気をつけたいと思います。

なお MTOS 4.1 であれば以下の場所からダウンロードできますよ。

http://wiki.movabletype.org/LocalizedPackages/MTOS-4.1

それではよろしくお願い致します。

[7] Posted by yujiro logo : October 7, 2008 2:44 PM

こんにちは。

以前、お世話になったのですが、再びWordPressから戻ってきました。
また、テンプレートを使わせていただいてます。

使用バージョンは、4.22-jaです。
php化をしているのですが、どうしても各記事のアーカイブページのみ「ページが見つからないエラー」が出てしまいます。一生懸命探しているのですが見つからない。

マニュアルでURLを入力してもダメです。FTPで見るとキチンとファイルがあるのですが、フォルダーのパーミッションは、777、ファイルのは、666です。

月別アーカイブのページは、問題なく表示されるので、何が原因かわからないでいます。何かお知恵を拝借できませんでしょうか。宜しくお願いします。

XML宣言の部分は、XML宣言を自動的に切り替えるをコピペさせていただいて使用しています。

[8] Posted by ナタリー : November 4, 2008 8:36 AM

↑たびたび済みません。

.htaccessファイルに問題があったようです。
ぐるぐる回っていただけだったみたいです。
.htaccessファイルの名前を書き換えると無事表示されましたので。

失礼しました。。。

[9] Posted by ナタリー : November 4, 2008 11:42 AM

>ナタリーさん
こんにちは。
ご連絡ありがとうございました。
無事に解決したようで良かったです。
ではでは!

[10] Posted by yujiro logo : November 4, 2008 11:58 AM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)