Ограничение кода и комментарии в шаблонах Smarty

May 4, 2010 by admin Комментировать »

Все Smarty-теги представляют собой последова-гельность символов, которая по умолчанию начинается с открывающей фигурной скобки и заканчивается закры­вающей фигурной скобкой. В шаблонах, которые используются на практике, очень часто приходится работать с кодом JavaScript или таблицами стилей (CSS). Там и там фигурные скобки "{ и "}" так же являются служебными символами, и поэтому такой шаблон без дополнительного вмешательства будет ошибочным.

<style>

td.odd {color:#ffffff}

</style>

</head>

<body>

{$GREETING}

Здесь Smarty попытается разобрать CSS-конструкцию {color:#ffffff} и, ко­нечно же, сообщит об ошибке. Чтобы шаблонизатор не рассматривал эту конструк­цию как свой тег, необходимо применить один из нескольких способов ограниче­ния кода.

Первым и одним из самых удобных способов является использование тега {literal}. Этот тег указывает на то, что заключенный в нем текст должен воспри­ниматься буквально и не обрабатываться шаблонизатором. Рассмотрим пример.

(literal) <style>

td.odd {color:#ffffff}

</style>

{/literal}

При таком подходе внутри тега можно без опасений писать и CSS, и код JavaScript. Если внутри него понадобится вставить тег Smarty, то вместо символов фигурных скобок для этого тега нужно будет использовать их специальные замени­тели: {Idelim} и {rdelim}. В шаблоне это может выглядеть так.

(literal) <style>

td.odd {color:{Idelim}$COLOR{rdeliin}}

</style>

{/literal}

В данном примере в значение цвета шрифта для CSS-класса odd будет подстав­лено значение переменной Smarty $COLOR.

Другим способом решения проблемы с фигурными скобками может послу­жить вынесение всех стилей и JavaScript-кода в отдельные файлы и подключение их стандартными средствами HTML. Впрочем, фигурные скобки являются огра­ничителями по умолчанию и при разработке могут быть легко заменены на лю­бые другие символы или последовательности символов. Например, разработчики популярной системы управления контентом с открытым кодом Xoops во избежа­ние конфликтов в качестве ограничителей используют последовательности "<{" и "}>". За ограничители в Smarty отвечают свойства Smarty: : lef t_delimiter и Smarty: :rig]nt_delimiter. Изменение ограничителей может выполняться как в конкретном скрипте, так и на уровне класса Smarty. Чтобы изменить настройки для одного скрипта, можно использовать следующий код.

$smarty = new Smarty;

$smarty-•left_delimiter = "<{";

$smarty •right_delimiter = "}>";

Для изменения ограничителей во всех экземплярах Smarty нужно модифици­ровать файл Smarty.class.plip, поменяв в нем значения по умолчанию для left_delimiter и riglit_delimiter.

Другой "дополнительной" задачей помимо ограничения кода Smarty является вставка комментариев. Как известно, комментарии являются основной формой до­кументации и играют важную роль в сопровождении любой программной системы. Так как язык шаблонов Smarty достаточно развит, то в иных случаях будет совсем не лишним задокументировать некоторый код прямо в шаблоне. Для создания комментариев используются теги, состоящие из ограничителей (по умолчанию это фигурные скобки) и звездочек. Пример комментария в шаблоне.

{* Выводим на экран таблицу стилей *}

{literal}

<style>

td.odd {color:{Idelim}$COLOR{rdelim)}

</style>

{/literal}

Код " {* Выводим на экран таблицу стилей * } " при обработке шаблониза-тором не будет выведен на экран.

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты