技術や物事のかきとめ(旧データ)

はてなダイアリーからの移行です。もともとかつて「はてなグループ」で公開していた内容を移動しました。

Smartyテンプレート中にJavascriptやCSSを書きたいがエラーになってしまう。

■原因/理由
それらのスクリプト中にて使用する "{" と "}" が、
Smartyのタグ定義でも使用されているためです。
それらで囲われた箇所が、smartyのタグと解釈されてしまい、
結果として定義していないsmartyタグのエラーといわれてしまいます。


■対策
以下、2つ方法があります。


○方法1
smartyで解釈しないブロックを一時的に定義する。


[方法]
テンプレート上で、解釈しないブロックを{literal}〜{literal}で囲む。


[使用関数] literal


[使用イメージ]

{literal}
<script type="text/javascript">
<!--
document.write("ほげ");
// -->
</script>
{/literal}


[参考URL]
http://sunset.freespace.jp/Smarty/SmartyManual_2-6-7J_html/language.function.literal.html



○方法2
smartyのタグを変更する。


[方法]
設定ファイルにて、デリミタの変更処理の記述する。


[参考URL]
http://sunset.freespace.jp/smarty/SmartyManual_2-6-3J_html/language.escaping.html
http://sunset.freespace.jp/Smarty/SmartyManual_2-6-7J_html/language.function.ldelim.html