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/ такого змісту:
Такий шаблон виведе на сайт усі кореневі сторінки, у яких активовано параметр "Відображати в меню ", а також сторінки, які є дочірніми по відношенню до активної сторінки. При цьому активна сторінка має активувати параметр "Показувати підменю ".