プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Smarty、テンプレートファイルから別のテンプレートファイルを読み込む
今回はテンプレート内で別のテンプレートを呼び出すときのお話です。
「どーせ『include』でしょ?」とか思った方はバッチリ大正解(*´ェ`*)ノ

と言う訳で、テンプレート内で別のテンプレートを呼び出すときの書き方はこちらφ(--)

{include file='テンプレートファイル名'}

例えばこんなテンプレートを用意するとφ(--)

■test.tpl
<html>
<head><title></title></head>
<body>

main<br>

{include file='sub.tpl'}

</body>
</html>

■sub.tpl
sub

こんな結果になりますφ(--)

main
sub

mainとsubがくっつきましたね。

mainテンプレート内で用意した変数をsubテンプレートに渡す場合は

{include file='テンプレートファイル名' val1 = $val2 val1 = $val2 …… }

のように、後ろにくっつけてあげればOKです。

例えばこんなテンプレートを用意するとφ(--)

■test2.tpl
<html>
<head><title></title></head>
<body>

{$tmp_val=10}
{$tmp_val2=20}


main<br>
{$tmp_val}<br>
{$tmp_val2}<br>

{include file='sub2.tpl' tmp_val=$tmp_val tmp_val2=$tmp_val2}

</body>
</html>

■sub2.tpl
sub<br>
{$tmp_val}<br>
{$tmp_val2}<br>


こんな結果になりますφ(--)

main
10
20
sub
10
20

mainテンプレートで用意した変数「tmp_val」「tmp_val2」が
ちゃんとsubテンプレートにも渡っていますね。
まぁ、あまり使う機会は無いと思うけどっ(-。-)ぼそっ

PHP側でassignした値は特に意識しなくても使えます。
例えばこんなコードを書くとφ(--)

■test3.php
<?php
    //「Smarty.class.php」をインクルード
    require_once(dirname(__FILE__) . '/smarty/libs/Smarty.class.php');

    //インスタンス作成
    $smarty = new Smarty();

    //ディレクトリ指定
    $smarty->template_dir = dirname(__FILE__) . "/templates";
    $smarty->compile_dir = dirname(__FILE__) . "/templates_c";
    $smarty->cache_dir = dirname(__FILE__) . "/cache";
    $smarty->config_dir = dirname(__FILE__) . "/config";

    //値設定
    $smarty->assign("val1", "hoge");
    $smarty->assign("val12", "hoge2");


    //テンプレート表示
    $smarty->display("test3.tpl");
?>

■test3.tpl
<html>
<head><title></title></head>
<body>

main<br>
{$val1}<br>

{include file='sub3.tpl'}

</body>
</html>

■sub3.tpl
sub<br>
{$val2}<br>

こんな結果になりますφ(--)

main
hoge
sub
hoge2

特に何もしていないけど変数「val2」をsubテンプレートから参照できました。

ちなみにsubテンプレート内で値を変更してもmainテンプレートには反映されません。
テンプレート内で値を書き換える機会は多くないと思いますが、
もし書き換える場合はご注意ください。

例えばこんなテンプレートを書くとφ(--)

■test4.tpl
<html>
<head><title></title></head>
<body>

{$tmp_val=10}

main<br>
{$tmp_val}<br>

{include file='sub4.tpl' tmp_val=$tmp_val}

{$tmp_val}<br>

</body>
</html>

■sub4.tpl
{$tmp_val=20}

sub<br>
{$tmp_val}<br>

こんな結果になりますφ(--)

main
10
sub
20
10


subの方で「tmp_val」の値を10から20に変更しましたが、
mainに戻ってくると10のままです。

そんな感じですかね。
完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:Smarty  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事