システム開発スクール講座

システム制作やプログラミングの初心者向けシステム開発WEB講座スクール

SmartyでのJavaScriptやCSS直接記述


SmartyのテンプレートファイルにJavaScriptCSSを直接記述した場合、SmartyErroreが発生してしまう。


これはSmartyテンプレートでは、処理する記述をデフォルトで{}で囲まれた部分を実行の記述として処理するからだ。


JavaScriptCSSなども同様で、function宣言やcssセレクタ以降に記述される宣言ブロックで{}を使用しているので、直接ファイルに記述した場合は、Smartyでの処理が実行されてしまう。



エラーメッセージを見れば、変数宣言やプロパティが対象にエラーが出力されるので一目瞭然だが、
実行環境などをきちんと把握できない場合は、原因追究に戸惑う場合もある。


ましてや、知識がない担当者同士でやりとりをした場合、解決策の見えない伝言ゲームになってしまうこともある。


外部ファイルでの実行であれば全く問題はないが、都合上どうしても直記述をする場合には、
エスケープ専用のタグで囲むことで、Smartyがスキップしてくれる。


リテラル {literal}{/literal}でJavaScriptCSS記述を囲むことで、Smartyがその間に{}の記述があっても、
Smartyは記述をスキップして処理します。


補足としては、逆にSmartyテンプレート内で{}で囲んだ実行記述内に{}を記述したい場合は、{ldelim}{rdelim}と記述することで、
Smarty出力の際に、{}に置き換えて実行されます。