Smartyの構文解析を回避

時々、別の方法で構文解析されるある部分を Smarty に無視させたいと望んだり必要とさえする事があります。
典型的な例としては、テンプレートにJavascriptやCSSコードが含まれるときです。 それらの言語がSmartyのデフォルトのデリミタでもある{}を使用するときに問題が発生します。

もっとも単純な解決方法は、JavascriptとCSSコードをそれぞれファイルに切り分け、それらにアクセスするために標準的なHTMLメソッドを使用する事で状況を回避する事です。

リテラルなコンテンツを含むために {literal} .. {/literal} ブロックを使用する事が可能です。
HTMLエンティティの用法と同様に、今までのようなデリミタを表示するために {ldelim} と {rdelim} または、{$smarty.ldelim} と {$smarty.rdelim} が使用できます。

度々、Smarty の $left_delimiter と $right_delimiter を単純なものに変更すると便利になる事があります。

例 3-6. デリミタを変更する例

<?php

$smarty = new Smarty;
$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';
$smarty->assign('foo', 'bar');
$smarty->display('example.tpl');

?>

example.tpl の一部 :

<script language="javascript">
var foo = <!--{$foo}-->;
function dosomething() {
alert("foo is " + foo);
}
dosomething();
</script>

2005年07月08日(金) 09:44:54 Modified by smarten




スマートフォン版で見る