Smartyでデータを出力する際に自動でエスケープ処理をするように設定していることが多いと思います。
しかし、変数によってはエスケープしないで出力したい場合があります。
テンプレート内の変数に「smarty:nodefaults」を指定すればエスケープ処理されずに出力することが可能です。
※Smartyのバージョンによっては記述が違う場合があるそうなので注意が必要です。
下記にSmartyでテンプレート変数をエスケープしないで出力する方法をメモします。
■ エスケープ処理をしない方法
Smartyクラスで全ての変数にエスケープ処理を指定している場合です。
配列で設定すれば、複数の修正子を設定することができます。
$smarty->default_modifiers = array('escape:"html"');
変数に対して「smarty:nodefaults」を指定します。
{$test|smarty:nodefaults}
上記のように指定すれば、エスケープ処理されずに出力することができます。
■ default_modifiers
テンプレート内で使用する全ての変数に適用する修飾子を指定します。
指定したものはデフォルトで適用されるようになります。
$smarty->default_modifiers = array('', '');
■ 個別にエスケープ処理を指定する場合
{$test|escape:"html"}
個別にエスケープ処理をかける場合はエスケープ漏れがあるかもしれないので、
規定でエスケープ処理をかけるように設定した方がいいと思います。