Get Smarty

Donate

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

Buy cheap glasses from Cheapglasses123.com and save up to 80%.

Where to buy prescription glasses? EyewearCanada.com is your best choice!

Visit www.sport-kick.com for cheap soccer cleats, sneakers and Soccer Jerseys updates

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

Comments
No comments for this page.

Advertisement