TopMovable TypeカスタマイズPHP化 > 2007年12月
2007年12月21日

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

December 21,2007 1:33 AM
Tag:[, , ]
Permalink

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 に限定しました。

Comments [10] | Trackbacks [2]
Now loading...
QRcode

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

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site
loading ...
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 5.12