Меню KDT

Виджет "Меню"

Для того чтобы использовать виджет меню необходимо в 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 содержит меню с пунктами, которые будут отображаться по умолчанию, пока меню не будет заполнено администратором сайта
Код обязательно должен обладать отступом (tabs).