Початкова сторінка

Микола Жарких (Київ)

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

?

Агрегатори

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