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...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

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


AMN
Categories
Monthly Archives
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3