2013.
09.
08
19:55:49
今回はテンプレート内で別のテンプレートを呼び出すときのお話です。
「どーせ『include』でしょ?」とか思った方はバッチリ大正解(*´ェ`*)ノ
と言う訳で、テンプレート内で別のテンプレートを呼び出すときの書き方はこちらφ(--)
例えばこんなテンプレートを用意するとφ(--)
■test.tpl
■sub.tpl
こんな結果になりますφ(--)
mainとsubがくっつきましたね。
mainテンプレート内で用意した変数をsubテンプレートに渡す場合は
のように、後ろにくっつけてあげればOKです。
例えばこんなテンプレートを用意するとφ(--)
■test2.tpl
■sub2.tpl
こんな結果になりますφ(--)
mainテンプレートで用意した変数「tmp_val」「tmp_val2」が
ちゃんとsubテンプレートにも渡っていますね。
まぁ、あまり使う機会は無いと思うけどっ(-。-)ぼそっ
PHP側でassignした値は特に意識しなくても使えます。
例えばこんなコードを書くとφ(--)
■test3.php
■test3.tpl
■sub3.tpl
こんな結果になりますφ(--)
特に何もしていないけど変数「val2」をsubテンプレートから参照できました。
ちなみにsubテンプレート内で値を変更してもmainテンプレートには反映されません。
テンプレート内で値を書き換える機会は多くないと思いますが、
もし書き換える場合はご注意ください。
例えばこんなテンプレートを書くとφ(--)
■test4.tpl
■sub4.tpl
こんな結果になりますφ(--)
subの方で「tmp_val」の値を10から20に変更しましたが、
mainに戻ってくると10のままです。
そんな感じですかね。
完了\(--)/
「どーせ『include』でしょ?」とか思った方はバッチリ大正解(*´ェ`*)ノ
と言う訳で、テンプレート内で別のテンプレートを呼び出すときの書き方はこちらφ(--)
{include file='テンプレートファイル名'}
例えばこんなテンプレートを用意するとφ(--)
■test.tpl
<html>
<head><title></title></head>
<body>
main<br>
{include file='sub.tpl'}
</body>
</html>
<head><title></title></head>
<body>
main<br>
{include file='sub.tpl'}
</body>
</html>
■sub.tpl
sub
こんな結果になりますφ(--)
main
sub
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>
<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>
{$tmp_val}<br>
{$tmp_val2}<br>
こんな結果になりますφ(--)
main
10
20
sub
10
20
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");
?>
//「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>
<head><title></title></head>
<body>
main<br>
{$val1}<br>
{include file='sub3.tpl'}
</body>
</html>
■sub3.tpl
sub<br>
{$val2}<br>
{$val2}<br>
こんな結果になりますφ(--)
main
hoge
sub
hoge2
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>
<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>
sub<br>
{$tmp_val}<br>
こんな結果になりますφ(--)
main
10
sub
20
10
10
sub
20
10
subの方で「tmp_val」の値を10から20に変更しましたが、
mainに戻ってくると10のままです。
そんな感じですかね。
完了\(--)/