Начальная страница

Николай Жарких (Киев)

Персональный сайт

?

Агрегаторы

Смеретеги-агрегаторы подобны операторам цикла в языках программирования: они получают 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" />