TopMovable TypeカスタマイズPHP化 > Movable Type 4 で PHP 化する時の注意事項
2007年12月21日

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

Posted at December 21,2007 1:33 AM
Category:[PHP化]
Tag:[, , ]

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

しかし、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 タグが記述されていることを確認し、記述されていない場合は追加してください。

Posted by yujiro
関連記事
人気エントリー
トラックバックURL


コメント

いつもお世話になります。
こちらの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 Author Profile Page : 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 Author Profile Page : January 16, 2008 10:43 PM
コメントする

*必須



お知らせ:2008年5月現在、多忙のため、7月頃までコメントを速やかに回答できない状態が続きます。ご質問の内容によっては回答が7月以降になる可能性がありますので、予めご了承ください。

太字 イタリック アンダーライン ハイパーリンク 引用

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

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

Now loading...
Entries of this Category
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
BlogPeople
Now loading...
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 4.1
 
List Me!