SmartyのテンプレートにJavaScriptを記述する
テンプレートエンジン『Smarty』のテンプレートファイル(表示用ファイル)上にJavaScriptを記述する際に発生する問題とその解決方法をメモしておきます。
Smartyはテンプレートファイル上の中括弧{}で囲まれた部分をデフォルトでは処理すべき箇所と認識します。
例えば下記のGoogle AnalyticsのトラッキングコードをそのままSmartyのテンプレートファイルに記述してしまうと、{}の部分を処理すべき箇所と判断し、正しく表示されるべきページは真っ白なページになり表示されるでしょう。
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("");
pageTracker._trackPageview();
} catch(err) {}</script>
解決方法ですが、{}を処理すべき箇所と判断させない為に下記のように{literal}で囲めばよいのです。
{literal}
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("");
pageTracker._trackPageview();
} catch(err) {}</script>
{/literal}
{literal}について詳しくはSmartyマニュアル{literal}にてご確認ください。
Trackbacks:0
この記事のトラックバックURL:





