WikiPatterns
Общее описание
Расширение WikiPatterns – очень мощный инструмент для создания шаблонов и работы с ними.
Для работы требуется расширение AdvOntology
Создание шаблона
Каждый шаблон должен представляет собой папку с файлами и подпапками. Имя папки шаблона – его идентификатор. При установке шаблона нужно указывать именно имя папки. Располагать папку-шаблон нужно в extensions/WikiPatterns/site_template_data/templates
Структура папки
- TemplateName
- lang
- ru.php
- en.php
- install.xml
- one.txt
- sum.txt
- lang
Структура файлов в папке lang
<?php
$lang_field = array (
"<имя поля (см. install.xml)>" => "<пояснительный текст по этому полю>",
// ещё сколько угодно параметров
);
$lang_ptn = array (
"<имя параметра для использования в шаблоне>" => "<значение параметра>",
// ещё сколько угодно параметров
);
?>
Пример файла ru.php для создания новостей:
<?php
$lang_field = array (
"name" => "Название",
"pubdate" => "Дата публикации",
"shortdesc" => "Краткое описание",
"longdesc" => "Полное описание",
);
$lang_ptn = array (
"pubdate" => "Дата публикации",
"readmore" => "Читать подробнее",
);
?>
Структура файла install.xml
Шаблоны описываются в xml формате. Обязательно нужно заполнить имя шаблона и хотя бы одно поле. В разделе type поля указываем тип виртуальной формы.
<template> <name>ТУТ УКАЗЫВАЕМ ИМЯ ШАБЛОНА</name> <field> <name>ИМЯ ПОЛЯ</name> <description>ЕГО ОПИСАНИЕ</description> <type>ТИП ВИРТУАЛЬНОЙ ФОРМЫ ДЛЯ ПОЛЯ</type> </field> </template>
Как не трудно догадаться, полей может быть сколь-угодно много.
Пример шаблона для создания новостей:
<template> <name>NewsArticle</name> <field> <name>name</name> <description>Название</description> <type>text</type> </field> <field> <name>pubdate</name> <description>Дата публикации</description> <type>datetime</type> </field> <field> <name>shortdesc</name> <description>Краткое описание</description> <type>spawhtml</type> </field> <field> <name>longdesc</name> <description>Полное описание</description> <type>spawhtml</type> </field> </template>
Структура шаблонов one.txt и sum.txt
Шаблоны описываются в формате smarty, соответственно никаких особенных правил нет.
Единственное о чём нужно сказать – доступ к параметрам из языковых файлов и к содержимому шаблона:
Для шаблона one.txt
- {$data.<ИМЯ ПОЛЯ>} – возвратит значение нужного поля
Для шаблона sum.txt
- {$pages} – возвратит массив страниц
Доступ к параметрам языка одинаков для обоих файлов
- {$lang.<имя поля>} – возвратит значение из языкового файла
Пример шаблонов для новостей
one.txt
<# <h1>{$data.name}</h1> <small>{$lang.pubdate}: {$data.pubdate}</small> <br /><br /> {$data.longdesc} #>
sum.txt
<# {foreach from=$pages item=page} <h2>{$page.data.name}</h2> <i>[{$page.data.pubdate|date_format_rus}]</i><br /><br /> {$page.data.shortdesc}<br /> <div align="right"> <a href="{$system.rooturl}{$page.tag}">{$lang.readmore}</a> </div> <br /><hr /> {/foreach} #>
Как видно из примеров, создавать на базе WikiPatterns свои шаблоны совсем не сложно. Общий размер всех файлов для организации новостей – 10 (языковой файл) + 23 (описание полей) + 6 (one.txt) + 11 (sum.txt) = 50 строк. Для сравнения – написание подобного модуля для новостей займёт не менее 100 строк.
Внедрение в систему
Сначала нужно установить шаблон по его имени (читай выше).
Затем на страницу вставляем два экшена – tempatesum и createpage:
С вставкой createpage всё просто – укажите в параметре pattern имя шаблона.
Например: {{createpage pattern="NewsArticle"}}
С tempatesum всё сложнее:
Параметры tempatesum
- первый параметр (все равно, как называется) – имя шаблона (не идентификатор)
- for – для какой страницы
- sortby – по какому полю сортировать (tag,time, или поле из шаблона)
- sortorder – ASC/DESC (DESC по умолчанию)
- max – максимальное кол-во результатов
- modifier – использовать некоторый другой файл для создания результатов
- collectall – 0/1 (0 по умолчанию) (использовать только прямые подстраницы (0) или все подстраницы (1))
- hidepagenumbers – 0/1 (0 по умолчанию) (показывать ссылки на следующие N новостей, или нет)
- pagenumstyle – prevnext | list (cтиль отображения номеров страниц)
- saverequest – сохранять параметры из строки запроса (пример: "view:tag")
- showpager – bottom|top|topbottom
Пример:
{{templatesum name="NewsArticle" for="Новости" sortby="pubdate" sortorder="DESC" max="10"}}
Использование
О использовании читай в справке Перейти.
Вам оказалась полезна эта статья? Если не трудно – дайте свою оценку тому, насколько предложенный здесь материал вам помог=)
Комментарии:
Нет комментариев, будьте первым!
Добавить комментарий: