Шаблоны в Optimizer 2.5

advertisement
Шаблоны Optimizer 2.5
стр. 1 из 13
Шаблоны Optimizer 2.5
В данном документе описывается использование шаблонов в технологии Optimizer.
Терминология
Шаблон вывода
Шаблон вывода – шаблон, который задает одну из стандартных форм отображения
элементов класса. Шаблон вывода – это только шаблон отображения. Если говорить
терминами команд, то шаблон вывода содержит только область found, т.е. способ
отображения, но не содержит query и других команд для заполнения хранилища. Шаблоны
вывода бывают настраиваемыми и фиксированными. Шаблоны вывода уникальны в рамках
системы, но для отдельных классов их можно перекрывать. В т.ч. можно перекрывать
настраиваемый шаблон фиксированным и наоборот.
Настраиваемый шаблон вывода
Настраиваемый шаблон вывода написан таким образом, что он поддерживает
динамическое изменение количества выводимых полей и форму их вывода.
Настраиваемые шаблоны вывода могут быть трех типов – для списка, для свойств, для
карточки поиска. Шаблон вывода для списка задает вид, как элементы класса будут
показываться в списке элементов. В зависимости от типа настраивается разные
параметры. Для класса может быть несколько шаблонов вывода каждого типа.
Фиксированный шаблон вывода
В фиксированном шаблоне вывода жестко прописываются поля и их вид. Для такого
шаблона на уровне интерфейса блокируется возможность настройки (поскольку она ни на
что не влияет).
Шаблон сайта
Шаблон сайта – шаблон, который задает общий вид представления информации на
сайте (сетку представления информации). Обычно при создании сайта используется 3-5
шаблонов сайта. Шаблон сайта содержит места публикации, в которые должны
подставляться реальные данные. Кроме того, шаблон сайта может содержать выборки
для формирования базовых элементов (меню, навигация и т.д.)
Место публикации
Именованная область в шаблоне сайта, куда будут подставляться данные.
Шаблон публикации
Шаблон, в котором формируется определенная часть страницы. В шаблоне выбираются
данные и отображаются. Для отображения могут использоваться шаблоны вывода.
Шаблон содержит выборки и элементы дизайна. Результат обработки шаблона
публикации может быть размещен в одном месте публикации.
Шаблон отображения
Шаблон отображения – шаблон, используемый для построения отображения. Указывает,
что отображение строиться на базе такого-то шаблона сайта и каждому месту
публикации ставит в соответствие шаблон публикации. Фактически представляет
собой набор соответствий.
Шаблоны Optimizer 2.5
стр. 2 из 13
Общие положения
шаблоны хранятся в директории: templates/
в ней есть поддиректории соответственно типам шаблонов:
site/ - шаблоны сайта
show/ - шаблоны отображения
pub/ - шаблоны публикации
sub/ - шаблоны вывода
mail/ - почтовые шаблоны
обработка любой страницы начинается с шаблона отображения
шаблоны отображения вызываются одноименные с asp-файлом, т.е. если вызвать about.asp
то будет отрисован шаблон templates/show/about.htm
Шаблоны Optimizer 2.5
стр. 3 из 13
Визуальная схема взаимодействия
шаблонов по порядку загрузки.
Шаблон отображения:
МЕСТО1 : ШАБЛОН ПУБЛИКАЦИИ1
Имя шаблона сайта и
список соответствия
мест в сетке шаблонам
публикации
МЕСТО2 : ШАБЛОН ПУБЛИКАЦИИ2
МЕСТО3 : ШАБЛОН ПУБЛИКАЦИИ3
МЕСТО4 : ШАБЛОН ПУБЛИКАЦИИ4
ШАБЛОН САЙТА 1
templates/show/document.htm
Шаблон сайта1:
ШАБЛОН
ПУБЛИКАЦИИ 1
МЕСТО 1
МЕСТО 3
ШАБЛОН
ПУБЛИКАЦИИ 3
ШАБЛОН
ПУБЛИКАЦИИ 2
МЕСТО 2
МЕСТО 4
ШАБЛОН
ПУБЛИКАЦИИ 4
templates/site/inner.htm
В шаблоне сайта
программируется
расположение, форма и
размер мест (сетка) под
шаблоны публикации.
Шаблоны Optimizer 2.5
стр. 4 из 13
ШАБЛОН ПУБЛИКАЦИИ1
ДАННЫЕ
templates/pub/doc1.htm
ШАБЛОН
ПУБЛИКАЦИИ2
MS SQL
ШАБЛОН
ПУБЛИКАЦИИ3
ШАБЛОН
ПУБЛИКАЦИИ4
ДАННЫЕ
В шаблонах публикации
располагается
непосредственное
наполнение данными,
файлами и
изображениями.
Если шаблон публикации
может иметь несколько
вариантов отображения –
он может наполняться
шаблонами вывода,
помимо других данных.
ДАННЫЕ
ДАННЫЕ
УСЛОВИЕ1 = ШАБЛОН
ВЫВОДА1
УСЛОВИЕ2 = ШАБЛОН
ВЫВОДА2
УСЛОВИЕ3 = ШАБЛОН
ВЫВОДА3
templates/pub/
doc2.htm
templates/pub/doc3.htm
templates/pub/
doc4.htm
ШАБЛОН ВЫВОДА 1
ШАБЛОН ВЫВОДА 2
ШАБЛОН ВЫВОДА 3
templates/sub/
client_prop1.htm
templates/sub/
client_prop2.htm
templates/sub/
client_prop3.htm
ДАННЫЕ
ДАННЫЕ
В РЕЗУЛЬТАТЕ
ДАННЫЕ
MS SQL
Шаблоны Optimizer 2.5
стр. 5 из 13
Пример цепочки вызова шаблонов:
document.asp
Шаблон отображения.
(templates/show/document.htm)
...
<gp@mso@set_place><место публикации>:<шаблон публикации><gp@mso@set_place>
<gp@mso@set_place>text:doc<gp@mso@set_place>
…
<gp@mso@sitetmpl>inner</gp@mso@sitetmpl>
Шаблон сайта
(templates/site/inner.htm)
<gp@mso@place>text</gp@mso@place>
Тег set_place только задает
соответствие места публикации и
шаблона публикации, сама
подстановка происходит при
обработке шаблона сайта –
соответствующего тега place
Шаблон публикации
(templates/pub/doc.htm)
<gp@query$1>
/* выбор свойств объекта */
</gp@query$1>
выбор настроенных атрибутов
<gp@mso@cmd_class_prop$2>
cl_code = '<код класса>'
subtmpl = '<шаблон вывода/настройка>'
</gp@mso@cmd_class_prop$2>
<gp@mso@cmd_class_prop$2>
cl_code = '<код класса>'
subtmpl = '<шаблон вывода/настройка>'
</gp@mso@cmd_class_prop$2>
<gp@mso@subtmpl><шаблон вывода>$$<код класса></gp@mso@subtmpl>
<gp@mso@subtmpl>client_prop$$article</gp@mso@subtmpl>
Шаблон вывода
(если есть шаблон templates/sub/<код класса>/client_prop.htm, то
отображается он, иначе templates/sub/client_prop.htm)
Вывод полей объекта из хранилища $1
Поля задаются в настройке шаблона (например, client_prop) в конфигураторе, и
выбираются в хранилище $2
<gp@process_fields$1>
<gp@qlist$2>
<b><gp@field$2>pr_name</gp@field$2></b>
<gp@field$1><gp@field$2>pr_code</gp@field$2></gp@field$1>
</gp@qlist$2>
</gp@process_fields$1>
Шаблоны Optimizer 2.5
стр. 6 из 13
Шаблоны
Шаблоны сайта
Сначала требуется определить основные виды страниц сайта, и выделить из них шаблоны
сайта
в шаблонах сайта можно определить общие места (заголовок, подвал, строка меню, ...), и
выделить их в инклюды
места для публикации информации отмечаются в шаблонах сайта тегами:
<gp@mso@place>placename</gp@mso@place>
placename - имя места для публикации
Шаблоны отображения
в шаблонах отображения происходит связывание шаблонов сайта, шаблонов публикации
и мест публикации
эта связь задается следующей конструкцией:
<gp@mso@set_place>placename1:template_name1</gp@mso@set_place>
<gp@mso@set_place_param>param_name:param_value</gp@mso@set_place_param>
...
<gp@mso@set_place>placename2:template_name2</gp@mso@set_place>
<gp@mso@set_place_param>param_name:param_value</gp@mso@set_place_param>
...
<gp@mso@set_place>placename1:template_name1</gp@mso@set_place>
<gp@mso@set_place_param>param_name:param_value</gp@mso@set_place_param>
...
<gp@mso@set_place>placename2:template_name1</gp@mso@set_place>
<gp@mso@set_place_param>param_name:param_value</gp@mso@set_place_param>
...
<gp@mso@sitetmpl>site_template_name</gp@mso@sitetmpl>
где:
placenameN
template_name1
param_name
param_value
site_template_name
- имена мест отображения
- имена шаблонов публикации, связываемых с данным местом
- имена параметров шаблонов публикации
- значения параметров шаблонов публикации
- имена шаблонов сайта
Шаблоны публикации
Шаблоны Optimizer 2.5
стр. 7 из 13
В шаблоне публикации может присутствовать секция <gp@mso@declare> - она
используется для работы с шаблоном через интерфейс конфигуратора, будет заполняться
автоматически, в данный момент не используется
<gp@mso@declare>
NAME=<имя шаблона>
DESCRIPTION=<Описание шаблона>
PARAM=<имя параметра>:<значение по умолчанию>:<Описание параметра>
...
PARAM=<имя параметра>:<значение по умолчанию>:<Описание параметра>
</gp@mso@declare>
параметры шаблона подставляются тегами:
<gp@mso@place_param><имя параметра>:<значение по
умолчанию></gp@mso@place_param>
для вывода параметров внутри других gp-тегов используется тег
<gp@mso@process_params>
...
</gp@mso@process_params>
вывод данных может осуществляться как в самом шаблоне публикации (gp-теги
gp@found, gp@list, …), так и подстановкой шаблонов вывода:
<gp@mso@subtmpl><имя шаблона вывода>$$<класс></gp@mso@subtmpl>
если шаблон переопределен для класса, то подставляется он, если нет – берется общий
шаблон по умолчанию
Шаблоны вывода (классов)
Не настраиваемые шаблоны вывода являются обычной секцией gp@found - gp@list
Настраиваемые шаблоны вывода строятся при помощи тегов gp@mso@set_pattern, или
при помощи переменных:
gp@mso@set_pattern:
выставляем значение шаблона строчки вывода
<gp@mso@set_pattern$5>
<gp@field$1><gp@field$5>pr_code</gp@field$5></gp@field$1>
</gp@mso@set_pattern$5>
выводим список строк из хранилища $1
{%pattern%} – заменяется на значение шаблона
<gp@mso@get_pattern$5>
<gp@qlist$1>
<tr bgcolor="white">
{%pattern%}
</tr>
Шаблоны Optimizer 2.5
стр. 8 из 13
</gp@qlist$1>
</gp@mso@get_pattern$5>
</table>
переменные:
устанавливаем значение переменной – шаблон строчки вывода
<gp@found$2>
<gp@mso@set_var>row_template:<gp@qlist$2><td>
<gp@process_fields><gp@field$1><gp@field$2>pr_code</gp@field$2></gp@fie
ld$1></gp@if><br></gp@if></gp@process_fields></td></gp@qlist$2>
</gp@mso@set_var>
</gp@found$2>
выводим список объектов
<table>
<gp@list>
<tr>
<gp@mso@var>abc</gp@mso@var>
</tr>
</table>
</gp@list>
Переменные
переменные значения переменных устанавливаются тегом:
<gp@mso@set_var><имя переменной>:<значение></gp@mso@set_var>
выдаются значения тегом:
<gp@mso@var><имя переменной></gp@mso@var>
Если переменная не определена ранее, выдается пустое значение.
Если нужно заменить значения переменных внутри других gp-тегов, используется тег:
<gp@mso@process_vars>
...
</gp@mso@process_vars>
Особенности
Локальность установки параметров для мест публикации тегами
set_place_param
теги gp@mso@set_place_param обрабатываются и в шаблонах вывода и в шаблонах
публикации с привязкой к месту публикации, т.е. если в шаблоне отображения встретится
конструкция:
<gp@mso@set_place>place1:pub_tmpl1</gp@mso@set_place>
<gp@mso@set_place_param>param1:1</gp@mso@set_place_param>
Шаблоны Optimizer 2.5
стр. 9 из 13
<gp@mso@set_place>place2:pub_tmpl1</gp@mso@set_place>
<gp@mso@set_place_param>param1:2</gp@mso@set_place_param>
<gp@mso@sitetmpl>two_place_tmpl</gp@mso@sitetmpl>
а в шаблоне публикации pub_tmpl1:
<gp@if>{%<gp@mso@place_param>param1</gp@mso@place_param>%}={%1%}
<gp@mso@set_place_param>param2:2_1</gp@mso@set_place_param>
{%else%}
<gp@mso@set_place_param>param2:2_2</gp@mso@set_place_param>
</gp@if>
<gp@include>/templates/inc1.inc</gp@include>
то есть инклюд inc1.inc будет включен дважды, но значение параметра param2 будет равно
“2_1” для места публикации place1, и “2_2” для place2
Рекомендации по организации шаблонов
Использование единого шаблона
писать html в шаблоне отображения (подходит, например, для первой страницы - т.к.
иногда для нее нет смысла делать отдельный шаблон сайта: раскладка на ней уникальна и
больше нигде на сайте не используется)
show/default.htm (шаблон отображения)
<gp@query>
получаем имя и другие атрибуты раздела
</gp@query>
<HTML>
<HEAD>
<TITLE><gp@field>c_name</gp@field></TITLE>
</HEAD>
<BODY>
<!-- обрамляющая таблица с нужными хтмл-ем -->
<table>
<!-- первая строка: текст -->
<tr><td>
<table>
<tr>
<td>
<!-- текст рубрики -->
<gp@field>comment</gp@field>
</td>
</tr>
</table>
</td></tr>
<!-- вторая строка: новости -->
<gp@query>
список новостей, например
</gp@query>
<gp@found>
<tr><td>
<table border=1>
<gp@qlist>
<tr>
<td><gp@field>c_name</gp@field></td>
</tr>
</gp@qlist>
Шаблоны Optimizer 2.5
стр. 10 из 13
</table>
</td></tr>
</gp@found>
<gp@not_found>
<tr><td>Новостей нет</td></tr>
</gp@not_found>
<gp@error>
<tr><td>Ошибка выборки новостей</td></tr>
</gp@error>
<!-- третья срока: анонсы -->
<gp@query>
список анонсов
</gp@query>
<gp@found>
<tr><td>
<table border=1 bgcolor=gray>
<gp@qlist>
<tr>
<td><gp@field>c_name</gp@field></td>
</tr>
</gp@qlist>
</table>
</td></tr>
</gp@found>
<!-- если нету - ничего не выводим -->
<gp@error>
<tr><td>Ошибка выборки анонсов</td></tr>
</gp@error>
</table>
</BODY>
</HTML>
в show/default.htm можно использовать инклюды, но места публикации и шаблоны
публикации с параметрами уже нельзя
Использование структуры шаблонов
подходит для внутренних страниц сайта - удобство в том, что есть один шаблон сайта одна раскладка страницы, а меняется только содержимое мест публикации
show/default.htm (шаблон отображения)
<gp@query>
получаем имя и другие атрибуты раздела
</gp@query>
<gp@comment>
ставим gp@process_fields чтобы обработать поля выборки до подстановки шаблонов
</gp@comment>
<gp@process_fields>
<gp@comment>
для title удобно использовать переменную - ее можно наращивать по ходу и проверять на
пустоту перед выводом
</gp@comment>
<gp@mso@set_var>title:<gp@field>c_name</gp@field></gp@mso@set_var>
<gp@mso@set_place>text:comment</gp@mso@set_place>
<gp@mso@set_place_param>text:<gp@field>comment</gp@field></gp@mso@set_place_param>
<gp@mso@set_place>doclist:news</gp@mso@set_place>
<gp@mso@set_place_param>ob_no:<gp@field>ob_no</gp@field></gp@mso@set_place_param>
<gp@mso@set_place_param>nf_message:Новостей нет</gp@mso@set_place_param>
<gp@mso@set_place_param>err_message:Ошибка выборки новостей</gp@mso@set_place_param>
<gp@mso@set_place>anons:anonslist</gp@mso@set_place>
Шаблоны Optimizer 2.5
стр. 11 из 13
</gp@process_fields>
<gp@mso@sitetmpl>inner</gp@mso@sitetmpl>
site/inner.htm (шаблон сайта)
<HTML>
<HEAD>
<TITLE><gp@mso@var>title:Title по умолчанию</gp@mso@var></TITLE>
</HEAD>
<BODY>
<!-- обрамляющая таблица с нужными хтмл-ем -->
<table>
<!-- первая строка: текст -->
<tr><td>
<gp@mso@place>text</gp@mso@place>
</td></tr>
<!-- вторая строка: новости -->
<gp@mso@place>doclist</gp@mso@place>
<!-- третья срока: анонсы -->
<gp@mso@place>anons</gp@mso@place>
</table>
</BODY>
</HTML>
pub/comment.htm (шаблон публикации)
<table>
<tr>
<td>
<!-- текст рубрики -->
<gp@mso@place_param>text</gp@mso@place_param>
</td>
</tr>
</table>
pub/news.htm (шаблон публикации)
<gp@comment>
т.к. <gp@mso@place_param>ob_no</gp@mso@place_param> используется внутри query,
поставим gp@mso@process_params чтобы он обработался раньше gp@query
</gp@comment>
<gp@mso@process_params>
<gp@query>
список новостей, например
(тут пригодится <gp@mso@place_param>ob_no</gp@mso@place_param>)
</gp@query>
</gp@mso@process_params>
<gp@found>
<tr><td>
<table border=1>
<gp@qlist>
<tr>
<td><gp@field>c_name</gp@field></td>
</tr>
</gp@qlist>
</table>
</td></tr>
</gp@found>
<gp@not_found>
<tr><td><gp@mso@place_param>nf_message</gp@mso@place_param></td></tr>
</gp@not_found>
<gp@error>
<tr><td><gp@mso@place_param>err_message</gp@mso@place_param></td></tr>
</gp@error>
pub/anonslist.htm (шаблон публикации)
Шаблоны Optimizer 2.5
стр. 12 из 13
<gp@query>
список анонсов
</gp@query>
<gp@found>
<tr><td>
<table border=1 bgcolor=gray>
<gp@qlist>
<tr>
<td><gp@field>c_name</gp@field></td>
</tr>
</gp@qlist>
</table>
</td></tr>
</gp@found>
<!-- если нету - ничего не выводим -->
<gp@error>
<tr><td>Ошибка выборки анонсов</td></tr>
</gp@error>
Работа с шаблонами в конфигураторе
Шаблоны сайта:
возможность загрузить или отредактировать шаблон
при загрузке или изменении шаблона сайта в нем находятся места публикации, заводятся в базе и
привязываются к шаблону
Шаблоны публикации:
возможность загрузить или отредактировать шаблон
при загрузке или изменении шаблона, считывается секция gp@declare - параметры, и описание
шаблона заводятся в базе и привязываются к шаблону (для параметра нужно хранить его имя,
описание и значение по умолчанию, имя шаблона в gp@declare лучше не определять - ведь оно
однозначно определяется именем файла)
Шаблоны отображения:
шаблоны отображения могут быть весьма сложными и многофункциональными, поэтому
однозначной привязкой "шаблон сайта - места публикации - шаблон публикации - значения
параметров шаблона публикации" ограничиться нельзя.
в шаблоне отображения может использоваться несколько таких соответствий, в зависимости от
переданных параметров, да и параметры шаблона публикации могут тоже меняться по каким-то
условиям
предлагается для шаблона отображения (помимо стандартной возможности загрузить или
отредактировать шаблон) дать возможность заводить, хранить и использовать несколько
именованых соответствий "шаблон сайта - места публикации - шаблон публикации-значения
параметров шаблона публикации"
при этом загрузка или редактирование шаблона отображения не будут влиять на эти объекты в
базе
то есть для шаблона отображения заводятся:
- название (автоматически по имени файла)
- описание
- элементы отображения, каждый из которых имеет:
Шаблоны Optimizer 2.5
стр. 13 из 13
- имя
- описание
- шаблон сайта (выбор из списка)
- для каждого из мест публикации выбранного шаблона сайта выбирается
шаблон публикации
- для каждого из этих шаблонов публикации задаются значения параметров
в шаблоне отображения можно вставлять в соответствующие места вызов элемента отображения
по имени - это даст возможность при определенном стиле написания шаблонов отображения
действительно серьезно управлять отображением информации на сайте через конфиг и админ.
Download