What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
{include}
タグを使用して、
現在のテンプレートに他のテンプレートをインクルードします。
現在のテンプレートにて利用可能なあらゆる変数は、
インクルードされたテンプレートでも同じく利用可能です。
{include}
タグには、テンプレートリソースのパスを含んだ
file
属性を必ず指定する必要があります。
{include}
の出力をブラウザに表示する代わりに変数に格納したい場合は、
オプションの assign
属性にその変数名を定義します。
{assign}
と同等です。
インクルードされたテンプレートに変数を渡すには、 attributes を使用します。インクルードされたテンプレートに明示的に渡された変数は、 インクルードされたファイルのスコープでのみ有効となります。 そのテンプレートに同じ名前の変数が存在する場合は、 渡された変数がそれをオーバーライドします。
全ての割り当て変数の値は、インクルードされたテンプレートのスコープが閉じた後に元に戻ります。
これは、インクルードされたテンプレート内で全ての変数を使用可能であるということです。
しかし、インクルードされたテンプレート内での変数の変更は
{include}
の後でインクルードしている側のテンプレート内では見ることはできません。
$template_dir
ディレクトリ外にあるファイルを {include}
するには、
テンプレートリソース を指定します。
属性名 | 型 | 必須 | デフォルト | 概要 |
---|---|---|---|---|
file | string | Yes | n/a | インクルードするテンプレートファイル名 |
assign | string | No | n/a | インクルードしたコンテンツの出力を格納する変数名 |
[var ...] | [var type] | No | n/a | ローカルからテンプレートに渡す変数 |
Example 7.17. シンプルな {include} の例
<html> <head> <title>{$title}</title> </head> <body> {include file='page_header.tpl'} {* ここにテンプレートの本体を記述します。変数 $tpl_name はたとえば 'contact.tpl' などに置き換えられます。 *} {include file="$tpl_name.tpl"} {include file='page_footer.tpl'} </body> </html>
Example 7.18. {include} に変数を渡す
{include file='links.tpl' title='Newest links' links=$link_array} {* ここにテンプレートの本体を記述します *} {include file='footer.tpl' foo='bar'}
このテンプレートは、以下のような links.tpl
をインクルードします。
<div id="box"> <h3>{$title}{/h3> <ul> {foreach from=$links item=l} .. 何かを行います ... </foreach} </ul> </div>
Example 7.19. {include} と変数への割り当て
この例は、nav.tpl
の内容を変数 $navbar
に割り当て、
ページの最初と最後に出力させるものです。
<body> {include file='nav.tpl' assign=navbar} {include file='header.tpl' title='Smarty is cool'} {$navbar} {* テンプレートの本体をここへ記述します *} {$navbar} {include file='footer.tpl'} </body>
Example 7.20. さまざまな {include} リソースの例
{* ファイルの絶対パス *} {include file='/usr/local/include/templates/header.tpl'} {* ファイルの絶対パス(結果は上と同じ) *} {include file='file:/usr/local/include/templates/header.tpl'} {* Windows環境のファイルの絶対パス(接頭辞の"file:"は必須) *} {include file='file:C:/www/pub/templates/header.tpl'} {* "db"と名付けられたテンプレートリソースからインクルード *} {include file='db:header.tpl'} {* 変数名に格納された名前のテンプレートをインクルード - 例 $module = 'contacts' *} {include file="$module.tpl"} {* この例は、シングルクォートでは変数が展開されないため、動作しません *} {include file='$module.tpl'} {* 複数の可変テンプレートをインクルード - 例 amber/links.view.tpl *} {include file="$style_dir/$module.$view.tpl"}
{include_php}
、
{insert}
、
{php}
、
テンプレートリソース および
コンポーネント化したテンプレート
も参照してください。