Предотвращение обработки Smarty

Иногда необходимо, чтобы 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>