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

Вывод контента

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

<ol>
    {% for key, value in _context  %}
      <li>{{ key }}</li>
    {% endfor %}
</ol>

Значения полей текущей категории находятся в массиве "currentCategory". Массив товаров на странице категории находится в переменной "items". Массив полей для текущего типа контента - "fields". Все поля, независимо от типа контента - "fieldsAll" (только в шаблоне категории). Значения полей текущего товара находятся в массиве "currentPage".

Для вывода товаров с фильтрацией можно использовать Twig-функцию {{ contentList(...) }}. Например, эту функцию можно использовать для блока "Новинки" на сайте или для сопутствующих товаров.

Пример использования (вывод новинок):

{{ contentList(
    'content_list_novelty',
    'products',
    {"isActive": true, "tags": {"$elemMatch": {"$in": ["Новинка"]}}},
    {"_id": "desc"},
    20, 4, 'homepage_novelty'
) }}

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

  1. Название шаблона, который находится в папке catalog/ (без расширения ".html.twig").
  2. Название коллекции БД.
  3. Запрос для поиска товаров в формате MongoDB.
  4. Сортировка в формате MongoDB. По умолчанию {"_id": "asc"}.
  5. Максимальное число элементов. По умолчанию 20.
  6. Число элементов в группе. Используется только в шаблоне. По умолчанию 1 (без групп).
  7. Ключ для кэширования HTML кода в файл. По умолчанию выключено (пустое значение).
  8. Переменная номера страницы. По умолчанию - page.
  9. Переменная максимального числа элементов на странице. По умолчанию - limit.
  10. Массив параметров, которые нужно передать в шаблон.

Постраничная навигация

Для перехода по страницам нужно импортировать шаблон templates/nav/pagination.html.twig.
Пример:

{% include 'nav/pagination.html.twig' %}

В этот шаблон должны передаваться переменные queryOptions и pagesOptions. Twig-функция contentList() поддерживает постраничную разбивку.

Вывод данных отдельной страницы

При необходимости вывода данных отдельной страницы на любой другой странице, можно использовать Twig-функцию {{ includeContent() }}.

Пример использования:

{{ includeContent('homepage_content_template', 'text_content', 4, 'homepage') }}

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

  1. Название шаблона (без расширения ".html.twig").
  2. Название коллекции БД.
  3. ID документа.
  4. Ключ для кэширования HTML кода в файл. По умолчанию выключено (пустое значение).
  5. Массив параметров, которые нужно передать в шаблон.

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