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}
ステートメントの後のインクルード元テンプレート側からは見えません。
このデフォルトの挙動を、インクルードされたテンプレート内で代入されたすべての変数について変更することができます。
その方法は、{include}
ステートメントの scope 属性を使うか、
あるいは {assign}
ステートメントを使うかのいずれかです。
後者の方法は、インクルードしたテンプレートからインクルード元のテンプレートに
値を返す場合に便利です。
$template_dir
ディレクトリ外にあるファイルを {include}
するには、
テンプレートリソース を指定します。
属性名 | 型 | 必須 | デフォルト | 概要 |
---|---|---|---|---|
file | string | Yes | n/a | インクルードするテンプレートファイル名 |
assign | string | No | n/a | インクルードしたコンテンツの出力を格納する変数名 |
cache_lifetime | integer | No | n/a | このサブテンプレートのキャッシュについて独自に設定するキャッシュの有効期限 |
compile_id | string/integer | No | n/a | このサブ連プレートのコンパイルに使う独自の compile_id |
cache_id | string/integer | No | n/a | このサブテンプレートのキャッシュに使う独自の cache_id |
scope | string | No | n/a | サブテンプレート内で代入されたすべての変数のスコープ。'parent'、'root' あるいは 'global' |
[var ...] | [var type] | No | n/a | ローカルからテンプレートに渡す変数 |
オプションのフラグ
名前 | 概要 |
---|---|
nocache | このサブテンプレートのキャッシュを無効にする |
caching | このサブテンプレートのキャッシュを有効にする |
inline | サブテンプレートをコンパイルしたコードを呼び出し元テンプレートのコンパイル済みコードとマージする |
Example 7.44. シンプルな {include} の例
<html> <head> <title>{$title}</title> </head> <body> {include file='page_header.tpl'} {* ここにテンプレートの本体を記述します。変数 $tpl_name はたとえば 'contact.tpl' などに置き換えられます。 *} {include file="$tpl_name.tpl"} {* file 属性の短縮形 *} {include 'page_footer.tpl'} </body> </html>
Example 7.45. {include} に変数を渡す
{include 'links.tpl' title='Newest links' links=$link_array} {* ここにテンプレートの本体を記述します *} {include 'footer.tpl' foo='bar'}
このテンプレートは、以下のような links.tpl
をインクルードします。
<div id="box"> <h3>{$title}{/h3> <ul> {foreach from=$links item=l} .. 何かを行います ... </foreach} </ul> </div>
Example 7.46. {include} での parent スコープの使用
インクルードされたテンプレート内で代入した変数は、インクルードした側のテンプレートからも見えます。
{include 'sub_template.tpl' scope=parent} ... {* sub_template で代入した変数を表示します *} {$foo}<br> {$bar}<br> ...
上のテンプレートでインクルードしている sub_template.tpl
は、次のようになります。
... {assign var=foo value='something'} {assign var=bar value='value'} ...
Example 7.47. キャッシュを無効にした {include}
インクルードされたテンプレートはキャッシュされません。
{include 'sub_template.tpl' nocache} ...
Example 7.48. 個別のキャッシュ有効期限を設定した {include}
この例では、インクルードされたテンプレートのキャッシュ有効期限を独自に 500 秒に設定します。
{include 'sub_template.tpl' cache_lifteime=500} ...
Example 7.49. 強制的にキャッシュする {include}
この例では、グローバルなキャッシュ設定にかかわらず、インクルードされたテンプレートはキャッシュされます。
{include 'sub_template.tpl' caching} ...
Example 7.50. {include} と変数への割り当て
この例は、nav.tpl
の内容を変数 $navbar
に割り当て、
ページの最初と最後に出力させるものです。
<body> {include 'nav.tpl' assign=navbar} {include 'header.tpl' title='Smarty is cool'} {$navbar} {* テンプレートの本体をここへ記述します *} {$navbar} {include 'footer.tpl'} </body>
Example 7.51. さまざまな {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}
、
テンプレートリソース および
コンポーネント化したテンプレート
も参照してください。