Документация Shopkeeper 4.x

Меню

Выпадающее меню

Выпадающее меню выводится в шаблоне при помощи функции categoriesTree().

Пример:

{{ categoriesTree(0, 'menu_dropdown', null, activeCategoriesIds, true, 'current') }}

Аргументы (по порядку):

  1. ID родительской категории.
  2. Название шаблона для вывода (берется из папки templates/nav/).
  3. Данные меню. Если null (по умолчанию), то данные будут получены из базы данных.
  4. Массив активных страниц и категорий (вверх по вложенности).
  5. Включить кэширование HTML кода. По умолчанию выключено.
  6. Имя класса активного элемента меню (см. подробнее ниже). По умолчанию - active.

В шаблоне доступны все поля категории в массиве children, а также:

  • currentUri - текущий URI страницы.
  • uriArr - массив URI до текущей страницы.

Кэширование меню

Если включено кэширование, то весь HTML код меню будет сохранен в файле. Очистить кэш можно в административной части сайта в разделе "Настройки" - кнопка "Очистить кэш" -> "Очистить файловый кэш".

Для того, чтобы иметь возможность отмечать текущий пункт меню при выводе из кэша, можно использовать метки в коде вашего шаблона меню.

Пример:

<a href="{{ catalogPath(category.uri) }}" class="nav-link active{{ category.id }}-">
    {{ category.title }}
</a>

Метка active{{ category.id }}- будет автоматически заменена на имя класса активного элемента меню, заданного в вызове функции.

Полный пример шаблона меню с рекурсивным выводом категорий (templates/default/nav/menu_dropdown.html.twig):

<ul class="menu-dropdown navbar-nav mr-auto">
    {% for category in children %}
        <li class="nav-item{% if category.children|length > 0 %} parent{% endif %}">
            <a href="{{ catalogPath(category.uri) }}" class="nav-link active{{ category.id }}-">
                {{ category.title }}
            </a>
            {{ categoriesTree(category.id, 'menu_dropdown_child', category, activeCategoriesIds) }}
        </li>
    {%  endfor %}
</ul>

Дополнительные материалы

Документация шаблонизатора Twig