Иногда необходимо, чтобы Smarty не обрабатывал часть шаблона, которая должна по умолчанию обрабатываться. Классическим примером такой ситуации является встраивание Javascript или CSS-кода в шаблон. Проблема появляется из-за того, что эти языки используют символы { и }, которые так же используются в качестве разделителей для Smarty.
Самым простым решением является избежание этой ситуации путём выноса Javascript'а и CSS-кода в отдельные файлы и использования стандартных методов HTML для доступа к ним.
Дословное включение контента возможно при помощи блоков
{literal}..{/literal}
.
Подобно тому, как вы используете HTML-сущности ( и т.п.), вы можете
использовать {ldelim}
,{rdelim}
или
{$smarty.ldelim}
для отображения текущих разделителей.
Порой бывает удобно просто изменить свойства
$left_delimiter
и
$right_delimiter
в объекте Smarty.
Example 3.8. Изменение разделителей
<?php $smarty->left_delimiter = '<!--{'; $smarty->right_delimiter = '}-->'; $smarty->assign('foo', 'bar'); $smarty->assign('name', 'Albert'); $smarty->display('example.tpl'); ?>
Пример шаблона:
Welcome <!--{$name}--> to Smarty <script language="javascript"> var foo = <!--{$foo}-->; function dosomething() { alert("foo is " + foo); } dosomething(); </script>