PHPUtilプラグイン(その2・ファイルの読み込み)

PHPUtilプラグインをインストールすると、多くのテンプレートタグが追加されます。
それらの中から、簡単なテンプレートタグから順に解説していきます。
今日は、ファイルを読み込んでその位置に出力するテンプレートタグを取り上げます。

1.Movable Type 5.13への対応

Movable Type 5.13では、セキュリティ強化のために、MTIncludeタグのfileモディファイアが非推奨になりました。
このプラグインでは、ファイル読み込み関係のテンプレートタグとして、MTPHPReadfile/MTPHPInclude/MTPHPIncludeOnceのタグの3つを提供しますが、デフォルトでは使用できないようになっています。

MTPHPReadfileタグを利用できるようにするには、mt-config.cgiに以下の1行を追加します。

AllowPHPReadFile 1

また、MTPHPIncludeタグ/MTPHPIncludeOnceタグを利用できるようにするには、mt-config.cgiに以下の1行を追加します。

AllowPHPInclude 1

2.MTPHPReadFileタグ

出力中のページに、他のファイルから読み込んだ内容を組み込みたい場面は、多々あります。
例えば、ブログのすべてのページで共通な部分(サイドバー等)を1つのファイルに出力しておいて、各ページに組み込むような場合です。

MTPHPReadFileタグは、このような場合に使います。
書き方は以下の通りです。

<$mt:PHPReadFile file="ファイル名"$>

2-1.相対パス指定

ファイル名を相対パスで書くと、ブログ(ウェブサイト)のディレクトリを基準に、ファイルが読み込まれます。
例えば、以下のように書くと、このタグの位置に、ブログ(ウェブサイト)のディレクトリにある「sidebar.html」というファイルが読み込まれます。

<$mt:PHPReadFile file="sidebar.html"$>

2-2.絶対パス指定

ファイル名を絶対パスで書くと、サーバー上のそのパスのファイルが読み込まれます。
例えば、以下のように書くと、このタグの位置に、サーバー上の「/var/data/sidebar.html」というファイルが読み込まれます。

<$mt:PHPReadFile file="/var/data/sidebar.html"$>

2-3.記号で指定

さらに、fileモディファイアは、MTFileTemplateタグのformatモディファイアと同じ書き方をすることができます。
例えば、以下のように書くと、ブログ(ウェブサイト)のディレクトリにある「entryXXX.html」(XXXはもっとも新しいブログ記事のID)のようなファイルを読み込んで出力することができます。

<mt:Entires lastn="1">
<$mt:PHPReadFile file="entry%E.html"$>
</mt:Entries>

3.MTPHPIncludeタグ

MTPHPReadFileタグと似た動作をするテンプレートタグとして、「MTPHPInclude」というタグも追加されます。
書き方は以下の通りで、MTPHPReadFileタグとほぼ同じです。

<$mt:PHPReadInclude file="ファイル名"$>

MTPHPReadFileタグでは、ファイルの中にPHPのコードが含まれていても、PHPとして処理されず、そのまま文字列の形で出力されます。
一方、MTPHPIncludeタグでは、ファイルの中にPHPのコードが含まれていた場合は、その部分がPHPとして処理されます。

例えば、読み込むファイルの内容が以下のようになっているとします。

<?php echo 'Hello, world.'; ?>

この場合、MTPHPReadFileタグでこのファイルを読み込むと、「<?php echo 'Hello, world.'; ?>」とそのまま出力されます。
一方、MTPHPReadFileタグで読み込んだ場合、PHPのecho文コードとして処理され、「Hello, world.」だけが出力されます。

4.MTPHPIncludeOnceタグ

MTPHPIncludeOnceタグも、MTPHPIncludeタグと同様に、読み込んだファイルの中にPHPのコードがあれば、PHPとして処理されます。
ただし、同じファイルを複数回読み込んだ場合は、最初の一回だけ処理が行われ、二回目以降は無視されます。

場合によっては、PHPのライブラリのファイルを組み込みたいことがあります。
この場合、同じライブラリを複数回組み込まないようにするために、MTPHPIncludeOnceタグを使うと良いです。

5.PHPUtilプラグイン関係の記事の一覧

PHPUtil関係のその他の記事は、以下のリンクから参照できます。