Smarty マニュアル

前のページ

第 7章組み込み関数

次のページ

include_php

属性名型必須デフォルト概要

file

string

Yes

n/a

インクルードするphpファイル名

once

boolean

No

true

同じphpファイルが複数回インクルードされた場合は、一度だけインクルードするかどうか

assign

string

No

n/a

include_phpの出力を格納する変数名

テクニカルノート: include_php は Smarty でほとんど推奨されていません。カスタムテンプレート関数を通じて 同等の機能が実現できます。include_php を使用する唯一の理由は、php 関数を プラグインディレクトリまたはアプリケーションコードから退避させる必要が本当にある場合です。 詳細は、コンポーネントされたテンプレートの例を参照して下さい。

テンプレートにphpスクリプトをインクルードします。セキュリティが有効の時には、phpスクリプトは$trusted_dirで指定されたディレクトリに位置する必要があります。file属性にはインクルードするphpファイルのパス($trusted_dirからの相対パス、又は絶対パス)を必ず指定して下さい。

include_phpは、phpスクリプトをテンプレートファイルから分離して管理するのに最適です。例えば、サイトナビゲーションを示すテンプレートがある時に、データベースから動的に取得する事が可能です。それには、データベースにあるコンテンツを別のディレクトリに取り込むphpスクリプトを用意し、テンプレートの初めにこれをインクルードします。事前にアプリケーションによってデータベースの情報が割り当てられていれば、何の問題も無くこのテンプレートをインクルードする事ができます。

デフォルトでは、phpファイルはテンプレート内で複数回呼ばれても一度しかインクルードしません。once属性によって毎回インクルードするべきかどうかを指定できます。この属性をfalseに設定すると、テンプレート内でインクルードされる毎にphpスクリプトをインクルードします。

include_phpの出力をブラウザ表示する代わりに変数に格納するには、 assign属性を指定します。

smartyオブジェクトは、インクルードしたphpスクリプトの範囲内で$thisとして有効です。

例 7-9. include_php 関数

load_nav.php-------------<?php// ナビゲーションが持つセクションをMySQLから読み込み、テンプレート変数に割り当てるrequire_once("MySQL.class.php");$sql = new MySQL;$sql->query("select * from site_nav_sections order by name",SQL_ALL);$this->assign('sections',$sql->record);?>index.tpl---------{* $trusted_dirからの相対パスか、絶対パス *}{include_php file="/path/to/load_nav.php"}{foreach item="curr_section" from=$sections}<a href="{$curr_section.url}">{$curr_section.name}</a><br>{/foreach}

ページ上段