Документация

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

Для вывода списка товаров используется шаблон 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>

renderOutputType

Рендеринг поля с использованием шаблона. Аргументы:

  1. Значение поля.
  2. Название типа вывода.
  3. Массив параметров типа вывода.
  4. Массив с данными товара.
  5. Массив с данными поля.
  6. Массив с дополнительными данными, к которым нужно получить доступ в шаблоне.

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

{% for item in items %}
    ...
    {{ renderOutputType(item.image, 'image', [], item) }}
    ...
{% endfor %}

renderOutputTypeField

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

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

Аргументы:

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

renderOutputTypeChunk

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

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

Аргументы:

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

renderOutputTypeArray

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

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

Аргументы:

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

renderOutputGallery

Рендеринг фотогалереи с использованием шаблона. Аргументы:

  1. Массив с данными страницы (товара).
  2. Массив с данными полей типа контента.
  3. Базовое имя поля с картинкой.
  4. Название чанка (шаблона) данного поля. Данное название указывается в свойствах типа вывода в окне типа контента.

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

{{ renderOutputGallery(currentPage, fields, 'image') }}

getFieldNameByChunk

Вывод имени поля по названию чанка.

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

Пример:

{{ getFieldNameByChunk(currentPage, fields, 'header') }}

getField

Получить данные одного поля на названию поля или чанка. Аргументы:

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

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

{% set fieldData = getField(fields, '', 'schedule') %}
...

getFieldOption

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

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

Аргументы:

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

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

catalogPath

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

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

Аргументы:

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

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

imageUrl или fileUrl

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

{{ imageUrl(category.image, '/img/nofoto.png') }}

Аргументы:

  1. Массив с данными файла картинки.
  2. URL по умолчанию.

Пример с фильтром изменения размера картинки:

{{ imageUrl(category.image, '/img/nofoto.png') | imagine_filter('thumb_medium_relative') }}

pathLocalized

Вывод ссылки по имени роута контроллера для текущей локали.
Аргументы:

  1. Имя роута.
  2. Массив параметров URL. Пример использования:
    {{ pathLocalized('profile_contacts') }}

pageUrl

Вывод ссылки на страницу в постраничной навигации. Аргументы:

  1. Массив с параметрами постраничной навигации.
  2. Номер страницы (будет преобразовано в &page=...).
  3. Число элементов на странице (будет преобразовано в &limit=...).
  4. Название поля для сортировки (будет преобразовано в &order_by=...).

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

...
{% for i in 1..pagesOptions.total %}
    <li class="page-item{% if i == pagesOptions.current %} active{% endif %}">
        <a class="page-link" href="{{ pageUrl(pagesOptions, i) }}{{ queryOptions.filterStr }}">
            {{ i }}
        </a>
    </li>
{% endfor %}
...

settingsList

Вывод списка настроек по названию группы.

Аргументы:

  1. Название группы настроек (поле "groupName" в БД).
  2. Название шаблона в папке "catalog" (без .html.twig).
  3. Включить кэш HTML.
  4. Включить кэш данных.
  5. Массив данных, которые нужно передать в шаблон.

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

{{ settingsList('SETTINGS_LANGUAGES', 'languages_list', false, true) }}

fieldByLocale

Вывод значения поля для текущей локали.
Аргументы:

  1. Массив с данными страницы.
  2. Имя поля. Пример использования (название текущей категории):
    <h1>{{ fieldByLocale(currentPage.menuData, 'title') }}</h1>

outputFilters

Вывод фильтров для категории товаров. Аргументы:

  1. Массив с данными фильтров.
  2. Префикс для названия шаблона.
  3. Ключ кеша (строка с именем ключа).

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

{{ outputFilters( filters, '', 'filters' ~ currentPage.id ) }}

outputFilter

Вывод одного блока фильтров. Аргументы:

  1. Массив с данными фильтра.
  2. Префикс для названия шаблона.

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

{% for filterData in filters %}
    {{ outputFilter(filterData) }}
{% endfor %}

categoriesTree

Вывод дерева категорий (меню). Аргументы:

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

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

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

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

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

arraySearch

Получить индекс значения в массиве. Аналог PHP-функции "array_search". Аргументы:

  1. Что искать (строка).
  2. Где искать (массив строк).

Пример использования смотреть ниже.

switch

Вывод значения из массива в зависимости от значения в другом массиве. Аргументы:

  1. Значение, которое нужно найти в первом массиве.
  2. Первый массив значений.
  3. Второй массив значений. Значение по индексу будет выведено в случае, если будет найдено совпадение в первом массиве.

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

{% for tagValue in data %}
    <div>
        <span class="badge {{ switch(arraySearch(tagValue, fieldProperties.inputProperties.values_list|split('||')), [0, 1, 2], ['badge-success', 'badge-warning', 'badge-info']) }}">
            {{ tagValue }}
        </span>
    </div>
{% endfor %}

isPaidProduct

Проверка куплен или нет товар.
Аргументы:

  1. Имя типа контента.
  2. ID товара.

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

{% if isPaidProduct(currentCategory.contentTypeName, currentPage.id) %}
    <p>Куплено.</p>
{% else %}
    <p>Не куплено.</p>
{% endif %}

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