include_php

属性名?必須デフォルト概要
filestring?Yesn/aインクルードするphpファイル名
onceboolean?Notrue同じphpファイルが複数回インクルードされた場合は、一度だけインクルードするかどうか
assignstring?Non/ainclude_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}

2005年07月08日(金) 11:58:22 Modified by smarten




スマートフォン版で見る