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

Данные и шаблоны

Для вывода списка товаров используется шаблон templates/category.html.twig. Для страницы товаров используется шаблон templates/content-page.html.twig. Можно создать отдельный шаблон для каждого типа контента. Для этого нужно использовать системное имя контента как префикс названия шаблона.

Примеры:

templates/text-content_category.html.twig
templates/text-content_content-page.html.twig

"text-content" - это системное имя типа контента. Если такой шаблон существует, он будет использован для страницы данного типа контента.

Страница со списком товаров

В шаблоне доступны следующие данные:

  • activeCategoriesIds - Массив ID активных категорий (вверх по вложенности).
  • currentCategory - Объект текущей категории.
  • currentPage - Объект текущей категории (клон).
  • currentId - ID текущей страницы.
  • currentUri - URI текущей страницы.
  • listTemplate - Название текущего типа вывода контента (grid, list...).
  • items - Массив с данными товаров для текущей страницы.
  • fields - Массив с данными полей для текущего типа контента, у которых установлена опция "Показывать в списке".
  • fieldsAll - Все данные полей для текущего типа контента.
  • filters - Массив данных фильтров для текущей категории товаров.
  • categoriesMenu - Массив с данными вложенных категорий.
  • categoriesSiblings - Массив с данными соседних категорий.
  • breadcrumbs - Массив с данными хлебных крошек.
  • queryOptions - Данные запроса из текущей URL страницы.
  • pagesOptions - Данные для постраничной разбивки.

Страница товара

В шаблоне доступны следующие данные:

  • currentCategory - Объект текущей категории.
  • activeCategoriesIds - Массив ID активных категорий (вверх по вложенности).
  • currentPage - Данные полей текущей страницы (товара).
  • contentType - Объект типа контента текущей страницы.
  • currentId - ID текущей страницы.
  • currentUri - URI текущей страницы.
  • currency - Название текущей валюты.
  • categoriesMenu - Массив с данными вложенных категорий.
  • breadcrumbs - Массив с данными хлебных крошек.
  • fields - Массив с данными полей для текущего типа контента, у которых установлена опция "Показывать в списке".
  • priceFieldName - Имя поля цены товаров текущего типа контента.

Данные полей товаров можно выводить несколькими способами.
Вывод сырых данных:

<span class="text-secondary">
{{ currentPage.price }}
</span>

Вывод данных с использованием шаблона типа вывода:

{{ renderOutputTypeField(currentPage, fields, 'price') }}

Аргументы:

  1. Массив со всеми данными страницы.
  2. Массив с данными полей типа контента.
  3. Системное имя поля.

Вывод данных поля по названию чанка:

{{ renderOutputTypeChunk(currentPage, fields, 'price') }}

Аргументы:

  1. Массив со всеми данными страницы.
  2. Массив с данными полей типа контента.
  3. Название чанка (шаблона) данного поля. Данное название указывается в свойствах типа вывода в окне типа контента.
  4. Префикс для шаблона.
  5. Массив с данными, которые нужно передать в шаблон.
  6. Максимальное число полей. По умолчанию - 0 (не ограничено).

Вывод всех полей, в свойствах которых включен флажок "Показывать в списке".

{{ renderOutputTypeArray(currentPage, fields, 'prefix_') }}

Аргументы:

  1. Массив со всеми данными страницы.
  2. Массив с данными полей типа контента.
  3. Префикс для шаблона.
  4. Массив с данными, которые нужно передать в шаблон.

Для вывода свойств поля можно использовать функцию getFieldOption($fieldsData, $fieldName[, $optionName]).
Пример:

{{ getFieldOption(fields, 'image', 'properties') | json_encode }}

Аргументы:

  1. Массив с данными полей типа контента.
  2. Название поля.
  3. Название свойства.

Шаблоны для типов вывода полей находятся в папке templates/chunks/fields/. Для формирования названия шаблона используется поле "Название чанка". Если оно не заполнено, используется системное имя поля.

Вывод полного URL для товара. Пример:

{{ catalogPath(currentCategoryUri, systemName, itemData, 'categories') }}

Аргументы:

  1. URI текущей категории.
  2. Системное имя товара.
  3. Массив со значениями полей товара.
  4. Название поля категорий. Не обязательное, но рекомендуется использовать, если на сайте используются множественные категории.

Для вывода контента доступны функции contentList() и includeContent(). О них читайте в разделе Вывод контента.

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