WikiPatterns
Для разработки дизайна как отдельной страницы, так и элементов списка используются шаблоны SMARTY.
Примером страниц, использующих WikiPatterns, является список персоналий. На личной странице каждой персоналии в едином оформлении указаны: ФИО, фото, краткая биография, список трудов и т.п. Одновременно с этим на любой странице сайта можно разместить список, содержащий одни только фамилии – ссылки на личные страницы с полной информацией.
Инсталляция
Шаг 1
В образовавшейся после инсталляции расширения директории sites/[mysite.ru]/data/WikiPatterns/templates, создайте папку файлов шаблона, содержащую следующие файлы:
- [Person] имя шаблона
- lang для мультиязычных сайтов
- en.php
- ru.php
- install.xml структура данных
- one.txt SMARTY-шаблон для отдельной страницы
- sum.txt SMARTY-шаблон для элементов списка
- lang для мультиязычных сайтов
Шаг 2
Опишите структуру данных в файле install.xml. обязательно!!!
Опишите дизайн элементов в SMARTY-шаблонах one.txt и sum.txt это можно сделать позднее Подробнее см. ниже.
Шаг 3
Проинсталлируйте шаблон Person на странице административной зоны сайта /Администрирование/Сервисы/WikiPatterns.
РИС
Шаг 4
Разместите на сайте экшены:
- templatesum для агрегирования страниц в списки
- createpage для создания новых страниц с использованием шаблона
{{createpage pattern="Person"}}
Новые страницы, построенные по шаблону, будут добавляться в кластер страницы, на которой размещен экшн {{createpage}}, т.е. она станет для них родительской. Экшн {{templatesum}} можно размещать на любой странице, в том числе в PageBlocks, однако, если нет особых возражений, рекомендуется прописывать оба экшена на одной странице.
install.xml
<field>
<description>ФИО</description>
<type>text</type>
<field>
<description>Дата рожд.</description>
<type>date</type>
<default>2000–12–31</default>
<field>
<description>Биография</description>
<type>wikieditor rows="10"</type>
Имя шаблона <name>Person</name> должно соответствовать имени папки шаблона.
<type>textarea rows="6"</type>
<type>wikieditor rows="6"</type>
<type>date</type>
<type>datetime</type>
<type>int low="1" high="5"</type>
<type>select list="статья:монография:тезисы"</type>
<type>selectint from="1" to="5"</type>
<type>tselect table="advontotypes_wpPerson" field="name" key="id"</type>
<type>tmultselect table="advontotypes_wpPerson" field="name" key="id"</type>
<type>checkbox</type> // [0|1]
<type>selectradio list="Мск:СПб:регионы [layout = horizontal]</type>
???<type>imagehttploader</type>
NB для tselect и tmultselect отображается field, возвращается key
NB imagehttploader - текстовое поле – если ввести адрес удаленной картинки, закачивает её на сервер и сохраняет как файл, заменяя результат.
one.txt и sum.txt
Простейший one.txt
==={$data.name}==
<#<img src="{$rooturl}sites/socmodel.com/files/person_foto/{$data.img}"/>#>
{$data.desc}
Простейший sum.txt агрегатор
{foreach from=$pages item=page}
* ((/{$page.supertag} {$page.data.name})) - {$page.data.desc}
{/foreach}
- {$data.[имя_поля]} – данные страницы в one.txt
- {$page.data.[имя_поля]} – данные страницы в sum.txt
- {$page.id} – id страницы
- {$page.tag} – адрес страницы от корня
- {$page.supertag} – адрес страницы транслитом
- {$page.pretag} – адрес родительской страницы от корня
- {$page.prename} – имя родительской страницы
- {$page.time} – время сохранения страницы Y-m-d h:i:s
- {$themeurl} – адрес темы
- {$rooturl} – адрес корня инсталляции QS
- {$today} – сегодняшний день, в формате Y-m-d
- {$yesterday} – вчерашний день, в формате Y-m-d
- {$isadmin} – является ли пользователь администратором
- {$curUserId} – если установлен сервис AdvOntology ID пользователя в базе AdvOntology, для незарегистрированного пользователя curUserId = 0.
NB Обработка картинок производится QS автоматически, и перед картинками не надо ставить адрес темы {$themeurl} , но в других случаях это может быть востребовано.
{{templatesum}}
{{templatesum name="Person" for="/Главная/Персоналии" sortby="name" sortorder="ASC" max="10" modifier="small"}}
- первый параметр – имя шаблона (все равно, как называется)
- for – для какой страницы
- sortby – по какому полю сортировать [tag|_updateTime|поле из шаблона]
- sortorder – ASC/DESC (DESC по умолчанию)
- max – максимальное кол-во результатов на странице
- modifier – использовать другой файл для при агрегировании, вида sum.[modifier].txt, например sum.small.txt
- collectall – 0/1 (0 по умолчанию) использовать только прямые подстраницы (0) или все подстраницы (1)
- hidepagenumbers – 0/1 (0 по умолчанию) показывать ссылки на следующие N элементов, или нет
- filter – типа IsHot1:1::Approved:2
- pagenumstyle – prevnext | list (cтиль отображения номеров страниц)
- saverequest – сохранять параметры из строки запроса (пример: "view:tag")
- showpager – bottom|top|topbottom
- viewall – показывать все страницы (в том числе скрытые)