Это старая версия Справка/Разработчик/Дизайн/WikiPatterns за 2014-04-09 16:25:28..
WikiPatterns
Расширение WikiPatterns позволяет создавать коллекции однотипных страниц, имеющих одинаковую структуру данных и визуальный дизайн. Данные со всех страниц, построенных по одному шаблону, могут быть агрегированы в списки.
Для разработки дизайна как отдельной страницы, так и элементов списка используются шаблоны SMARTY.
Для разработки дизайна как отдельной страницы, так и элементов списка используются шаблоны 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 для создания новых страниц с использованием шаблона
{{templatesum name="Person" for="/Персоналии" sortby="name" sortorder="ASC" max="10" collectall=1}}
{{createpage pattern="Person"}}
{{createpage pattern="Person"}}
Новые страницы, построенные по шаблону, будут добавляться в кластер страницы, на которой размещен экшн {{createpage}}, т.е. она станет для них родительской. Экшн {{templatesum}} можно размещать на любой странице, в том числе в PageBlocks, однако, если нет особых возражений, рекомендуется прописывать оба экшена на одной странице.
(div warning)Структура данных считывается из файла install.xml один раз в момент инсталляции шаблона. Если впоследствии потребуется внести изменения в структуру данных, придется переинсталлировать шаблон. При этом введенные данные будут утеряны.(bsdivgrid1)
Образец файла install.xml
<template>
<name>Person</name>
<field>
<field>
<field>
</template><field>
<name>name</name>
<description>ФИО</description>
<type>text</type>
</field><description>ФИО</description>
<type>text</type>
<field>
<name>birthdate</name>
<description>Дата рожд.</description>
<type>date</type>
<default>2000–12–31</default>
</field><description>Дата рожд.</description>
<type>date</type>
<default>2000–12–31</default>
<field>
<name>biо</name>
<description>Биография</description>
<type>wikieditor rows="10"</type>
</field><description>Биография</description>
<type>wikieditor rows="10"</type>
Имя шаблона <name>Person</name> должно соответствовать имени папки шаблона.
Возможные типы данных
<type>text</type>
<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>
<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 - текстовое поле – если ввести адрес удаленной картинки, закачивает её на сервер и сохраняет как файл, заменяя результат.
(php)==={$data.name}==
{$data.desc}(php){foreach from=$pages item=page}
- {$page.data.name} – {$page.data.desc}
- {$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.(php)Такого шаблона не существует.%%
- первый параметр – имя шаблона (все равно, как называется)
- 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 – показывать все страницы (в том числе скрытые)