Smarty マニュアル

前のページ

第 3章基本構文

次のページ

Smartyの構文解析を回避

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

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

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

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

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

<?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>

ページ上段