Для того чтобы использовать виджет меню необходимо в settings.xml
прописать:
<widget>
<type>menu</type>
<name>mainmenu</name>
<label>Главное меню. Сверху. Трехуровневое</label>
<uq>1</uq>
</widget>
При этом название ( Затем в файле шаблона, в котором необходимо вставить меню, нужно прописать следующее:name
) у виджета должено быть уникальным, а в текстовой метке (label
) обязательно нужно указать название, месторасположение меню и уровень его максимальной вложенности.
{% set widgetname = 'mainmenu' %}
{% set default = {
0: {childs: [1, 2]},
1: {uri: '/', lang: {ru: "Главная"}},
2: {uri: '/about', lang: {ru: "О сайте"}},
} %}
{% set data = widgetData(widgetname, default) %}
<ul class="iceverticalmenu">
{% for child in data.menu['0'].childs %}
{% set text = getLangData(data.menu[child].lang) %}
{% set uri = link(data.menu[child].uri) %}
{% set haschilds = data.menu[child].childs|length > 0 %}
<li {% if page.uri == data.menu[child].uri %} class="active"{% endif %}>
<a href="{{uri}}" target="{{data.menu[child].target}}">
<span>{{text}}</span>
</a>
{% if haschilds %}
<ul>
{% for ch1 in data.menu[child].childs %}
{% set text = getLangData(data.menu[ch1].lang) %}
{% set uri = link(data.menu[ch1].uri) %}
{% set haschilds = data.menu[ch1].childs|length > 0 %}
<li {% if page.uri == data.menu[ch1].uri %} class="active"{% endif %}>
<a href="{{uri}}" target="{{data.menu[child].target}}">
<span>{{text}}</span>
</a>
{% if haschilds %}
<ul>
{% for ch2 in data.menu[ch1].childs %}
{% set text = getLangData(data.menu[ch2].lang) %}
{% set uri = link(data.menu[ch2].uri) %}
<li {% if page.uri == data.menu[ch2].uri %} class="active"{% endif %}>
<a href="{{uri}}" target="{{data.menu[child].target}}">
<span>{{text}}</span>
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
Функция | Описание |
---|---|
getLangData(array) |
Получает текст на русском, английском, казахском и других языках в зависимости от выбранного языка сайта. На вход подается массив из текстов, в зависимости от переменной site.lang функция из этого массива выбирает нужный язык.Переменная array содержит в себе массив переводов пункта меню (например {ru: "Главная", en: "Main", kz: "Басты"})
|
link(url) |
Функция модернизирует url, добавляет туда язык и номер аккаунта. Переменная url это путь к какой-либо странице (например "/news")
|
widgetData(widget_name, array) |
Получаем данные по виджету меню. Переменная widget_name это имя виджета.Переменная array содержит меню с пунктами, которые будут отображаться по умолчанию, пока меню не будет заполнено администратором сайта
|