Это старая версия Справка/Разработчик/Дизайн/WikiPatterns за 2014-04-09 16:24:55..

WikiPatterns

Расширение WikiPatterns позволяет создавать коллекции однотипных страниц, имеющих одинаковую структуру данных и визуальный дизайн. Данные со всех страниц, построенных по одному шаблону, могут быть агрегированы в списки.
Для разработки дизайна как отдельной страницы, так и элементов списка используются шаблоны SMARTY.

Примером страниц, использующих WikiPatterns, является список персоналий. На личной странице каждой персоналии в едином оформлении указаны: ФИО, фото, краткая биография, список трудов и т.п. Одновременно с этим на любой странице сайта можно разместить список, содержащий одни только фамилии – ссылки на личные страницы с полной информацией.

Инсталляция

Шаг 1

В образовавшейся после инсталляции расширения директории sites/[mysite.ru]/data/WikiPatterns/templates, создайте папку файлов шаблона, содержащую следующие файлы:
  • [Person] имя шаблона
    • lang для мультиязычных сайтов
      • en.php
      • ru.php
    • install.xml структура данных
    • one.txt SMARTY-шаблон для отдельной страницы
    • sum.txt SMARTY-шаблон для элементов списка

Шаг 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}}, т.е. она станет для них родительской. Экшн {{templatesum}} можно размещать на любой странице, в том числе в PageBlocks, однако, если нет особых возражений, рекомендуется прописывать оба экшена на одной странице.
(div warning)Структура данных считывается из файла install.xml один раз в момент инсталляции шаблона. Если впоследствии потребуется внести изменения в структуру данных, придется переинсталлировать шаблон. При этом введенные данные будут утеряны.(bsdivgrid1)
Образец файла install.xml
<template>
<name>Person</name>
<field>
<name>name</name>
<description>ФИО</description>
<type>text</type>
</field>
<field>
<name>birthdate</name>
<description>Дата рожд.</description>
<type>date</type>
<default>2000–12–31</default>
</field>
<field>
<name>biо</name>
<description>Биография</description>
<type>wikieditor rows="10"</type>
</field>
</template>

Имя шаблона <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>

NB для tselect и tmultselect отображается field, возвращается key 
NB imagehttploader - текстовое поле – если ввести адрес удаленной картинки, закачивает её на сервер и сохраняет как файл, заменяя результат.
(php)==={$data.name}==

{$data.desc}(php){foreach from=$pages item=page}
  • {$page.data.name} – {$page.data.desc}
{/foreach}(bsdivgrid1) SMARTY-переменные, доступные из шаблонов:
  • {$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 – показывать все страницы (в том числе скрытые)