Content menu()

content menu()

%content menu()% — Виводить меню сайту за певним шаблоном.

Параметри: content menu([template = 'default', max_depth = '1', root_element_id = '0', $showHasChildren = '0', $currentPageId = '0'])

Ім'я шаблону, яким слід вивести меню сайту. У XSLT-шаблонізаторі ігнорується, можна вказати будь-яке значення.

Обмежувач, який вказує максимальну кількість рівнів меню, які необхідно вивести. У XSLT-шаблонізаторі до версії 2.8 ігнорується.

Якщо вказано цей параметр, то меню відраховуватиметься не від кореня дерева сайту, а від певної сторінки сайту.

Чи позначати пункти меню, якщо вони мають дочірні пункти.

ID сторінки, яку потрібно вважати поточною.

Цей макрос виводить меню сайту з максимальною кількістю рівнів меню max_depth . Якщо параметр max_depth не вказано, то вважається, що він дорівнює "1".

додаткові відомості

Приклад виклику

XML-відповідь UData

Якщо потрібно відобразити елементи вкладеного підменю, слід встановити параметр root_element_id , вказавши id елемента item , вкладені елементи якого потрібно обробити.

Наприклад так: udata://content/menu/notemplate/0/12

Тоді буде отримано наступну відповідь UData:

Щоб помічати активний пункт меню, слід описати шаблон для елемента item з атрибутом status = 'active' (див. нижче приклад використання).

Елементи та атрибути

Гілка, що містить елементи item, — сторінки, що відображаються в меню.

Елемент, який описує окремий пункт меню.

Ідентифікатор сторінки, що відображається у меню.

Шлях до сторінки, яка відображається в меню.

Посилання UPage на сторінку, яка відображається в меню.

Наявність цього атрибуту зі значенням "active" вказує на активний пункт меню (тобто макрос викликаний зі сторінки, що є цим пунктом меню).

Приклади використання

Для того, щоб вставити меню у певне місце на сторінці, необхідно викликати макрос за протоколом UData. Вкажемо у шаблоні дизайну місце виведення меню за допомогою інструкції apply-templates :

Тепер необхідно описати шаблон, який обробляє результати макросу і виводить весь список:

Тепер опишемо шаблон для неактивного пункту меню:

І шаблон з уточнюючою умовою match="item[@status = 'active']" для активного пункту меню:

Замість "." (точки), що означає значення поточного елемента, можна використовувати атрибут name :

У такому вигляді потрібно виводити значення, коли ми виводимо багаторівневе меню. також Різні меню засобами XSLT-шаблонізатора

Виведення меню здійснюється за шаблоном, вказаним у параметрі template . Ви можете не вказувати цей параметр, тоді для виводу буде використаний стандартний шаблон — default.tpl .

Шаблони, що використовуються

Макрос оперує шаблонами, що знаходяться в каталозі /tpls/content/menu/.

Блоки шаблону, що використовуються

menu_block_levelX

Виводить обрамляючий блок для виведення меню, куди підставлятимуться пункти меню. Пункти меню будуть відображені за блоками шаблонуmenu_line_levelX таmenu_line_levelX_a. "X" у назві блоку позначає номер рівня меню, для якого буде використовуватися цей блок.

Виводить список пунктів меню, відмальованих за допомогою блоківmenu_line_levelX таmenu_line_levelX_a.

Виводить id сторінки, яка є кореневою для поточного рівня меню.

menu_line_levelX

Відповідає за висновококремого пункту меню в тому випадку, що сторінка неактивна (тобто не є поточною сторінкою і не є батьківською сторінкою по відношенню до поточної сторінки). Сторінки, у яких не варто галочкаВідображати в меню, відображені в меню не будуть, так само як і сторінки, до яких немає доступу у поточного користувача (редагується у вкладціПрава доступу ). "X" у назві блоку позначає номер рівня меню, для якого буде використовуватися цей блок.

Виводить ID пункту меню.

Виводить назву пункту меню (назва сторінки).

Виводить посилання на пункт меню.

Порядковий номер сторінки у виводі вважається для кожного рівня меню окремо (1, 2, 3, 4, . ).

Виводить підменю наступного рівня в тому випадку, якщо для нього задані блоки в шаблоні та у поточного пункту меню в налаштуваннях стоїть галочкаПоказувати підменю.

Виводить роздільник між пунктами меню, якщо він описаний у блоціseparator.

Виводить CSS-клас для пункту меню, використовуючи блокmenu_class_levelX абоmenu_class_levelX_last.

menu_line_levelX_a

Відповідає за виведення окремого пункту меню в тому випадку, що сторінка активна (тобто є поточною сторінкою або є батьківською сторінкою по відношенню до поточної сторінки). "X" у назві блоку позначає номер рівня меню, для якого буде використовуватися цей блок.

Виводить ID пункту меню.

Виводить назву пункту меню (назва сторінки).

Виводить посилання на пункт меню.

Порядковий номер сторінки у виводі вважається для кожного рівня меню окремо (1, 2, 3, 4, . ).

Виводить підменю наступного рівня в тому випадку, якщо для нього задано блоки шаблону.

Виводить роздільник між пунктами меню,якщо він описаний у блоціseparator.

Виводить CSS-клас для пункту меню, використовуючи блокmenu_class_levelX абоmenu_class_levelX_last.

menu_line_levelX_in

Відповідає за виведення окремого пункту меню в тому випадку, якщо пункт меню, що виводиться, є батьківською сторінкою по відношенню до поточної сторінки. Цей блок використовується лише якщо параметрmax_depth більший за 1.

"X" у назві блоку позначає номер рівня меню, для якого буде використовуватися цей блок.

Локальні макроси аналогічні блоку menu_line_levelX_a.

menu_class_levelX

Виводить CSS-клас для всіх пунктів меню, крім останнього. Можна використовувати в блокахmenu_line_levelX таmenu_line_levelX_a для стильового оформлення пункту меню. "X" у назві блоку позначає номер рівня меню, для якого буде використовуватися цей блок.

menu_class_levelX_last

Виводить CSS-клас тільки для останнього пункту меню. Можна використовувати в блокахmenu_line_levelX таmenu_line_levelX_a для стильового оформлення пункту меню. "X" у назві блоку позначає номер рівня меню, для якого буде використовуватися цей блок.

Містить роздільник, який можна вивести в блокахmenu_line_levelX таmenu_line_levelX_a для розділення пунктів меню.

separator_last

Містить роздільник, який виводиться останнім у блокахmenu_line_levelX таmenu_line_levelX_a.

Приклади використання

Зверніть увагу! Параметр "Меню завжди розгорнуто " не буде діяти на вказаний у прикладі шаблон, оскільки в ньому не вказано місце для виведення списку сторінок, дочірніх неактивних сторінок. Для того щоб на кожнійсторінці в меню виводилися всі сторінки, позначені галочками "Відображати в меню " та "Показувати підменю " - слід вставити макрос %sub_menu% у потрібні місця блоківmenu_line_level1,menu_line_level2, і т.д.

У шаблоні дизайну поставте макрос %content menu('sample', 3)% .

Створіть файл sample.tpl у папці /tpls/content/menu/ такого змісту:

Такий шаблон виведе на сайт усі кореневі сторінки, у яких активовано параметр "Відображати в меню ", а також сторінки, які є дочірніми по відношенню до активної сторінки. При цьому активна сторінка має активувати параметр "Показувати підменю ".