smarty @Wiki

{include_php}

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

{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}

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

記事メニュー
目安箱バナー