{include_php} テクニカルノート {include_php} は Smarty ではほとんど推奨されていません。 カスタムテンプレート関数を使用すれば、同等の機能を実現できます。 {include_php} を使用する理由がもしあるとすれば、 plugins/ ディレクトリやアプリケーションのコードから PHP 関数を完全に隔離したい場合などです。 詳細は コンポーネント化したテンプレートの例 を参照してください。 属性名 必須 デフォルト 概要 file string Yes n/a インクルードする PHP ファイル名 once boolean No &true; 同じ PHP ファイルが複数回インクルードされた場合に、一度だけインクルードするかどうか assign string No n/a include_php の出力を格納する変数名 {include_php} タグを使用して、PHP スクリプトをテンプレートにインクルードします。 $security が有効な場合は、PHP スクリプトは $trusted_dir で指定されたディレクトリに存在する必要があります。{include_php} タグには file 属性が必須で、 ここにはインクルードする PHP ファイルへのパスを指定します。 このパスは $trusted_dir からの相対パスか絶対パスのいずれかとなります。 デフォルトでは、PHPファイルはテンプレート内で複数回呼ばれても一度しかインクルードしません。 once 属性によって毎回インクルードするべきかどうかを指定できます。 この属性を &false; に設定すると、テンプレート内でインクルードの指示がある毎に PHP スクリプトをインクルードします。 オプションで assign 属性を渡すこともできます。 これは、{include_php} の出力をブラウザに表示させる代わりに 変数に格納したい場合に、その変数名を指定します。 Smarty オブジェクトは、インクルードした PHP スクリプト内で $this として使用可能です。 {include_php} 関数 load_nav.php ファイル query('select url, name from navigation order by name'); $this->assign('navigation', $db->getRows()); ?> ]]> テンプレート {$nav.name}
{/foreach} ]]>
{include}$security$trusted_dir{php}{capture}テンプレートリソース および コンポーネント化したテンプレート も参照してください。