DSite CMS
DSite CMS
создано Media Programming Group
Последняя статья: Как добавить заголовок новости в Title

Поиск: 
Главная            Статьи            Форум            Новости            Описание
Обучающие ролики
Примеры сайтов на CMS DSite
Цены
Вебстудиям
Заявка на DSite
FAQ
Ссылки
Контакты
Скачать

Новости:
05.05.11 :: Обновление 4.91 (релиз)

21.04.11 :: Обновление 4.87

07.04.11 :: Обновление 4.83

04.02.11 :: Обновление от 01.02

25.06.10 :: Поиск по содержимому страниц


Логин:
Пароль:

Забыли пароль? Восстановить

Также Вы можете пройти регистрацию

05.08.2005 :: Класс Templater - обработчик шаблонов

По WPI (Web Programming Interface) системы DSite существует техническая документация, которая со временем будет опубликована на нашем сайте для зарегистрированных пользователей. Однако, некоторые технологии WPI требуют более подробного освещения, поэтому мы будем время от времени проливать свет на такие части в виде статей, расположенных здесь, на сайте www.dsite.ru.

Эта статья посвящена классу templater, который позволяет создавать простейшие шаблоны в системе DSite. Когда нужен этот класс?

Этот класс позволяет конечному пользователю редактировать динамические части сайта обычным визуальным редактором, что добавляет определенные удобства программисту, который разрабатывает сайт. Самый простой пример шаблона - это шаблон рассылки писем подписчикам. Он может выглядеть так:

{mail_from:=newsbot@microsoft.com}
Это письмо содержит обновление новостей на сайте {DOMAINNAME}
Т
ема новости:
{news_name}
Краткое содержание:
{news_brief}
...подробности см. на сайте!
Удачи.
Робот по рассылке новостей DSite.

Переменные, имена которых заключены в фигурные скобки, необходимо определить до использования класса и объявить в GLOBAL. Это можно сделать в динамической странице с помощью языка PHP:

<? $GLOBALS['имя переменной'] = значение; ?>

Если вы не хотите использовать глобальные переменные, вы можете сделать свой массив и дать его в качестве параметра методу translate класса tempalte, о котором немного позже.

Мы старались сделать шаблоны настолько простыми на сколько это вообще возможно. Самое простое - это переменные, которые заменяются на их значения. Но в классе существует еще несколько возможностей. Эти возможности все относятся к более сложным заменам, поэтому выделяются на отдельных строках, другими словами каждый оператор шаблона должен находится на отдельной строке и заканчиваться переносом. Все операторы "вырезаются" из конечной отображаемой страницы, поэтому учитывать их в дизайне страницы не нужно. В приведенном выше шаблоне есть оператор присваивания. По причинам, глубоко уходящим в историю программирования, оператор присваивания языка шаблонов аналогичен оператору присваивания в языке Pascal (он же Delphi). Присвоение позволяет изменить значение глобальной переменной из шаблона, а не наоборот. Иногда, как в случае с типовой динамической страницей рассылки, это бывает необходимо. В данном случае заменяется адрес, от лица которого производится рассылка.

В общем случае оператор присвоения выглядит так:

{имя переменной:=значение}

Имена переменных в шаблоне - это набор букв и цифр без пробелов. Возможно использования символа подчеркивания (_).

Также в шаблонах существует условный оператор присвоения, который частично аналогичен макрооператору в языке С.

{имя переменной?значение если правда:значение если ложь}

Если переменная содержит true, то ей будет присвоено значение между вопросительным знаком и двоеточием, в противном случае - значение в правой части. Этот способ присваивания удобен тогда, когда один и тот же шаблон используется для разных случаев. Например, подписка и отписка от рассылки. Шаблон может выглядеть например так:

{ACTIVATED?активирован:заблокирован} 
Уважаемый(ая) {USERNAME}.

Ваш эккаунт {LOGIN} был {ACTIVATED}.

Всего доброго.
{SERVER}

В случае активации эккаунта, шаблон пишет "активирован", в противном случае пишет "деактивирован".

Условный оператор отображения. Для некоторых случаев в шаблоне могут быть предусмотрены поля, отображение которых необходимо только в случае выполнения какого-то условия, например, поле КПП в бланке счета может быть незаполнено, в случае, если нам неизвестно значение КПП покупателя. Тогда шаблон может выглядеть так:

<td><b>Покупатель</b></td> 
<td>{F2NAME}</td></tr>
{F2ADDR!=''}<tr><td><b>Адрес:</b></td><td>{F2ADDR}</td></tr>
{F2ACCOUNT!=''}<tr><td><b>Расчетный счет №</b></td><td>{F2ACCOUNT}</td></tr>
{F2ACCOUNTCOR!=''}<tr><td><b>Корр. счет</b></td><td>{F2ACCOUNTCOR}</td></tr>
{F2BANK!=''}<tr><td><b>Банк</b></td><td>{F2BANK}</td></tr>
{F2INN!=''}<tr><td><b>ИНН</b></td><td>{F2INN}</td></tr>
{F2KPP!=''}<tr><td><b>КПП</b></td><td>{F2KPP}</td></tr>
{F2BIK!=''}<tr><td><b>БИК</b></td><td>{F2BIK}</td></tr>

Для этого оператора обязательно расположение всех условных элементов на одной строке! Синтаксис оператора такой:

{имя переменной условие значение}

условие - это условный оператор, по синтаксису аналогичный языку PHP. В приведенном выше примере, значение переменных сравнивается с пустой строкой. К счастью, язык HTML игнорирует все строки переноса, чем мы и пользуемся, задавая необходимые тэги на одной строчке с условным оператором отображения. 

Отображение массивов.

Самая интересная особенность шаблонов, пожалуй, это отображение переменных, содержащих массив. Когда это нужно? Представим, что вы хотите напечатать таблицу с динамическими значениями из БД, но оставить пользователю возможность ее правки визуальным редактором. Это очень похвально, с точки зрения возможностей управления сайтом для конечного пользователя, который не разбирается в PHP и не может править динамические страницы. Делается это такой же манипуляцией с одной строкой:

...
<tr height=40><td align=center>{ITEMID}</td><td>{ITEMNAME}</td></tr>
...

Соответственно, переменные ITEMID и ITEMNAME могут быть массивами, индексированными от нуля. Шаблон размножит строку, в которой встречается переменная, содержащая массив необходимое количество раз и заменит переменную значением соответствующей ячейки массива.

Если по каким-то причинам нет возможности гарантировать то, что множимый ряд будет находится в одной строке, используйте свойство класса templater под названием rowtag. Это поле класса используется только для шаблонов в формате HTML (XML). Если rowtag присвоить, например, 'TR', он будет искать всю подстроку и обрабатывать только тот участок, который лежит между <TR> и </TR>, что позволяет отвязаться от необходимости форматирования. Также на эту тему смотрите статью об использовании класса templater для динамических страниц.
Если rowtag необходимо сделать индивидуальным, можно его комментарить, например, таким образом:

<!--<MYPRODUCT>-->
<tr><td>{ITEMID}</td></tr><tr><td><a href="{ITEMURL}">{ITEMPIC}</a></td></tr>
<!--</MYPRODUCT>-->

Templater найдет коммент-теги и обработает их как размножающие, при этом rowtag='MYPRODUCT'. Что касается визуальных редакторов, они игнорируют комментарии, и пользователю нужно потрудится, чтобы удалить их из шаблона (хотя это, конечно, возможно). Также необходимо помнить, что для того, чтобы создать ссылку-параметр через визуальный редактор, необходимо выбрать тип протокола other (другое). 

Также следите за обновлениями в программных интерфейсах DSite (например, обновление класса Templater)



Статьи:

« 1  2  


FAQ  Поиск на форуме
Новое сообщение
Copyright © 2018 Webmedia.ru - создание сайтов & Media Programming Group