テンプレート内のJavaScript、スタイルシートの使用 (Smarty構文を無視)

Smartyのテンプレート内にJavaScriptやスタイルシート(CSS)を直接書いてしまうと、Smarty の構文として解析されエラーが出ることがあります。
このようにSmarty の構文解析の対象にしたくない場合は以下のようにします。

(1) Javascript と CSS コードをそれぞれファイルに切り分ける。
(2) {literal}..{/literal}で囲む。
(3) デリミタを変更する。

(2) {literal}..{/literal}で囲む。

テンプレート

{literal}
<script type="text/javascript">
<!--//
function hoge(){
  …
}
//-->
</script>
{/literal}

(3) デリミタを変更する。

現在のデリミタは、{ldelim}、{rdelim} あるいは {$smarty.ldelim} で確認することができます。

以下はデリミタを『 { 』から『 <!--{ 』、『 } 』から『 }--> 』に変更する例です。

PHP

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

テンプレート

<!--{$hoge}-->

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

関連記事

スポンサーリンク

indent修飾子 文字列をインデントする

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る