Smartyでテンプレートタグ用の{や}を自分専用のものに変える方法

Smartyのテンプレートタグは通常

{$aiueo}

というように、{}を利用する。

しかしこれだと一部問題が起きる場合がある。
それは、テンプレート内にJavaScriptコードがあった場合に{}がSmartyはエラーを起こしてしまうのである。

これを回避するために、{}を使う場所では
{literal}

{/literal}
で囲めばいいのだが、



これはうっかり忘れたりしてかなり面倒。

これを回避するために

Smartyのオブジェクト(例えば$smarty)が生成されたら


$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';

というように、デリミタを変更してしまえばよい。

こうすると、今まで{$aiueo}だったものが、
<!--{$aiueo}-->
というように書くことができ、{literal}など書く必要がなくなる。

ちなみにこの記述はECcubeがこのようにしていた。





コメントをどうぞ