Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

{include}

{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}テンプレートリソース および コンポーネント化したテンプレート も参照してください。