Агрегаторы
Смеретеги-агрегаторы подобны операторам цикла в языках программирования: они получают HTML код со смеретегами и вычисляют его (выполняют подстановку смеретегов) для определенного списка вершин. Результирующий HTML код является суммой HTML кодов, вычисленных для отдельных вершин.
Чаще всего агрегаторы применяются для генерации навигаторов – различных списков ссылок на вершины; но они могут применяться для формирования разнообразных отчетов, каталогов и других данных, для которых нужно объединять информацию из нескольких вершин.
Хотя базовый набор модулей Смереки включает множество различных агрегаторов, предусмотреть все случаи их применения невозможно, и программист Смереки довольно часто встречается с необходимостью написать собственные агрегаторы.
SmerAggregator
Модуль: aggregators/aggregator.php
Параметры: SmerekaValue Node LimitToClass HideMode
Назначение: выполняет вычисления HTML кода, переданного в параметре SmerekaValue, для дочерних вершин базовой вершины. Если параметр Node задан, он определяет ид базовой вершины; если он не задан, базовой считается контекстная вершина. Если параметр LimitToClass задан как ид класса, из числа дочерних вершин будут отобраны только вершины заданного класса. Если параметр HideMode = 1, агрегатор будет пропускать такие дочерние вершины, для которых атрибут Hidden = True.
Пример вызова. Выводим список статей, подчиненных определенной вершине:
<Smereka1 Module="aggregators/aggregator.php" Func="SmerAggregator" Node="1…" HideMode="1"> <p class="BT"> <Smereka Module="aggregators/navigators.php" Func="NavigatorItem" /> </p> </Smereka1>
OneLineNavigator
Модуль: aggregators/navigators.php
Параметры: те же, что и для SmerAggregator
Назначение: вывести список ссылок на дочерние вершины как одна строка.
Пример вызова. Выводим список статей, подчиненных определенной вершине:
<Smereka Module="aggregators/navigators.php" Func="OneLineNavigator" Node="1…" />
Этот способ лучше использовать, когда названия короткие и весь список может разместиться в одной строке.
TrackBar
Модуль: aggregators/navigators.php
Параметры: IncludeRoot IncludeLeaf Separator MaxDocTitle
Назначение: сформировать «хлебные крошки» – путь по дереву документов сайта от корня до текущей вершины.
IncludeRoot = 0 – не включать корневую вершину;
IncludeRoot = 1 – включать корневую вершину, но без ссылки;
IncludeRoot = 2 – включать корневую вершину как ссылку (по умолчанию);
IncludeLeaf = 0 – не включать конечную вершину;
IncludeLeaf = 1 – включать конечную вершину, но без ссылки (по умолчанию);
IncludeLeaf = 2 – включать конечную вершину как ссылку;
Separator – разделитель пути (по умолчанию '/');
MaxDocTitle – число, сколько символов из DocTitle включать; при превышении заголовок вершины обрезается на этом символе и добавляется …; по умолчанию не задано – сокращение не выполняется.
Пример вызова: <Smereka Module="aggregators/navigators.php" Func="TrackBar" />
Пример результата: можно увидеть на этой странице ниже ее заголовка.
TableAggregator
Модуль: aggregators/tablemaker.php
Параметры: те же, что и для SmerAggregator, + NumColumns Order Numbering NumberStr
Назначение: сформировать таблицу из агрегированных данных.
NumColumns – число колонок для таблицы (по умолчанию 2);
Order = 'column' – заполнять контейнер-таблицу по колонкам:
1… 10… 2… 11…
Order = 'row' – заполнять контейнер-таблицу по столбцам (по умолчанию):
1… 2… 5… 6…
Numbering – начальное значение, с которого начинать нумеровать элементы в таблице; если не установлено – не нумеровать вообще.
NumberStr – кодовая строка в шаблоне (SmerekaValue), которую нужно заменить номером. Если не установлено – нумерация не выполняется;
Пример вызова:
<table class="BTNoIndent" cellpadding="4"> <Smereka1 Module="aggregators/tablemaker.php" Func="TableAggregator" Node="1…" HideMode="1" NumColumns="2" Order="column" Numbering="1" NumberStr="As16Xz86"> <tr> <td> As16Xz86. <Smereka Module="aggregators/navigators.php" Func="NavigatorItem" /> </td> </tr> </Smereka1> </table>
Gallery
Модуль: aggregators/tablemaker.php
Параметры: те же, что и для TableAggregator
Назначение: сформировать галерею изображений в виде таблицы со ссылками.
Пример вызова: <Smereka Module="aggregators/tablemaker.php" Func="Gallery" />
Пример результата: можно посмотреть здесь.
TableOfContent
Модуль: aggregators/articlenavigators.php
Параметры: те же, что и для SmerAggregator, + WithAuthors
Назначение: вывести иерархический список ссылок на подчиненные вершины всех уровней (сформировать таблицу содержания иерархической публикации).
WithAuthors – если этот параметр равен 1, то для каждой вершины, которая имеет атрибут Authors, он будет выведен перед названием статьи.
Пример вызова.
<Smereka Module="aggregators/articlenavigators.php" Func="TableOfContent" />