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