Шаблонизатор
Шаблоны интернет-магазинов и сайтов, созданных на платформе beseller, используют шаблонизатор Twig — компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP.
Владельцы или разработчики могут модифицировать шаблоны изменяя внешний вид и функциональные возможности сайтов.
Для доступа к коду шаблонов вы можете обратиться к курирующему вас менеджеру.
Служба поддержки платформы beseller, также оказывает платные услуги по доработке шаблонов, в соответствии с заданиями клиентов.
Шаблон — это просто текстовый файл. Он может генерировать любой текстовый формат (HTML, XML, CSV, Latex, и т.д.).
Шаблон содержит переменные или выражения, которые будут заменяться значениями, когда шаблон вычисляется, и теги, которые контролируют логику шаблона.
Ниже приводится минимальный шаблон, который иллюстрирует основы. Мы рассмотрим детали позже:
<!DOCTYPE html>
<html>
<head>
<title>My Webpage</title>
</head>
<body>
<ul id="navigation">
{% for item in navigation %}
<li><a href="{{ item.href }}">{{ item.caption }}</a></li>
{% endfor %}
</ul>
<h1>My Webpage</h1>
{{ a_variable }}
</body>
</html>
Есть два вида разделителей: {% ... %}
И {{ ... }}
. Первый из них используется для выполнения операторов, таких как for-циклы , последний печатает результат выражения в шаблон.
Документацию по twig легко найти в интернете либо на официальном сайте разработчика.
Файлы шаблона
- additionals - дополнительные страницы
- cart - оформление заказа
- compare - сравнение
- compare.twig
- compare_fields_groups.twig
- compare_header.twig
- compare_header_groups.twig
- compare_product_item.twig
- compare_product_item_price.twig
- compare_status.twig
- compare_table_groups.twig
- errors - страницы ошибок
- find - поиск
- layout - каркас страниц
- footer.twig — нижняя часть страницы
- head.twig — head часть всех страниц, на которой устанавливаются важные элементы страниц (title, meta, css, js ...)
- header.twig — верхняя часть страниц
- layout.twig — основной каркас страниц
- toolbar.twig — тулбар
- news - новости
- product - товары
- input.twig
- product.twig
- product_cart.twig
- product_cart_button.twig
- product_compare_action.twig
- product_content.twig
- product_gallery.twig
- product_gallery_mini.twig
- product_links.twig
- product_list.twig
- product_list_item.twig
- product_marks.twig
- product_price_block.twig
- product_special_info.twig
- product_status.twig
- reviews_form.twig
- reviews_list.twig
- textarea.twig
- sections - секции/категории
- sections.twig
- sections_category_list.twig
- sections_category_list_for_main.twig
- sections_desc_full.twig
- sections_desc_short.twig
- sections_filter.twig
- sections_header.twig
- sitemap - карта сайта
- user - пользовательская часть
- address.twig — адреса
- profile.twig — профиль
- register.twig — регистрация
- restore.twig — страница восстановления пароля
- breadcrumbs.twig — хлебные крошки
- index.twig — главная страница
- pagination.twig — пагинация
Переменные шаблона
Получить параметры http запроса(например ?test=1) можно через функции:
- input_get('test') получит параметр test - "1"
- input_has('test') получит true
Каждая страница шаблона включает layout :
- info — объект с параметрами магазина
- name — название магазина
- shopName — имя из биллинга (ИП Иванов Иван Иванович)
- shopRegistration — свидетельство
- shopMale — адрес для почтовых отправлений
- shopPhone — контактные телефоны
- shopEmail — e-mail магазина
- adminEmail — e-mail администратора
- tradeRegister — дата регистрации в Торговом реестре РБ
- orderProcessingTime — время работы
- orderDeliveryTime — время доставки
- shopUnp — УНП
- urlReal — хост
- siteUrl — url магазина
- siteLogo — логотип
- sellerName — наименование продавца
- templateId — id шаблона
- active — номер статуса магазина (открыт/закрыт)
- title — заголовок <title> страницы
- meta.tags — массив <meta> элементов страницы
- headCode — Google Tag Manager Head code
- bodyCode — Google Tag Manager Body code
- css — массив <link> css элементов
- headerJs — массив js элементов (+ Google Analytics)
- additionalLinks.items [name, rus_name, sitemap_status] — массив дополнительных страниц
- banners — ассоциативный массив с баннерными полями
- bottom_baner — массив с нижними баннерами (footer)
- display_text — массив с центральными баннерами
- left_baner — массив c левыми баннерами
- right_baner — массив с правыми баннерами
- additional_baner — массив с дополнительными баннерами
- top_baner — массив с верхним баннером
- categoryTree.category — объект с деревом категорий
- id — id категории
- name — название категории
- pageId — id страницы
- statusId — id статуса категории (1 — Доступен, 2 — Не активен, 0 — В резерве)
- productCount — кол-во товаров в категории
- parentCategory
- id — id категории родителя
- pageId — id страницы категории родителя
- name — название категории родителя
- images — массив изображений категории
- icon — иконка изображения
- image — изображение
- additionalInfo
- fullDescription — полное описание категории
- description — описание
- fullName — полное название
- filterGroupId — связь с группой
- page — объект с информацией о странице
- id
- url — часть url категории
- additionalInfo — объект с дополнительной информацией
- parentUrl — часть url родителя
- position — позиция
- childCategories — массив внутренних категорий с теми же параметрами что и categoryTree.category
- additionalPages — ассоциативный массив дополнительных страниц
- ассоциативный массив массивов с ключами из групп страниц [left_baner, right_baner, footer, menu] (ключом является расположение)
- group_name — название группы страниц
- group_position — позиция группы страниц
- page_position — позиция страницы (такая же как ключ массива)
- name — имя страницы
- page_name — название страницы
- duty — флаг служебной страницы
- processingTime — массив времени работы магазина
- begin — время открытия
- end — время закрытия
- days — массив дней работы
- route — название роута(пути) страницы
- url — текущий url
- locale — локаль (язык)
- isTermsOfUse — требуется ли использовать пользовательское соглашение
- news.items — массив объектов новостей
- id
- title — заголовок
- body — текст новости
- data — дата новости
- meta — мета теги
- url — краткий url новости
- visiblePart — размещение ссылки на новость (1 — На главной и на странице новостей, 2 — На всех страницах)
- firstImg — первая картинка новости
- newsVisibleSection — нужно ли отображать секцию с новостями на данной странице
- shopMode — режим работы магазина (0 — Интернет-магазин, 1 — Интернет-каталог (витрина))
- modules — массив некоторых включенных модулей
Пример: {{ layout.info.name }} — название магазина
Функции шаблона
getProductsByCategoryPageId(pageId[, limit = 12]) — функция позволяет получить товары из любой категории на любой странице магазина.
Аргументы функции:
- pageId — pageId категории можно посмотреть в url строке браузера при редактировании категории в Beseller Site Manager.
- limit — количество товаров которое вернёт функция, по умолчанию 12 товаров, максимальное количество 48.
Максимальное количество вызовов данной функции на одной странице: 2
Пример:
{% for product in getProductsByCategoryPageId(1, 48) %}
{{ product.name }}
{{ product.price }}
{% endfor %}
Директории с файлами шаблона
additionals
Директория содержит шаблоны дополнительных страниц магазина.
Для дополнительных страниц, у которых нет шаблона, используется шаблон all.twig. Если вам нужно создать шаблон для своей новой страницы, просто назовите шаблон по части url новой страницы.
all.twig
Шаблон для всех дополнительных страниц, у которых нет специального шаблона.
Шаблон включает body :
- data
- id
- name — короткий url страницы
- info — текст страницы
- dateinput — дата
- status — статус
- rus_name — название
- title — заголовок
- keywords — метатеги
- description — метатеги
- sitemap_status — отображение страницы в карте сайта
- breadcrumbs — массив хлебных крошек
- route — маршрут
- name — название
- url — короткий url страницы
- subscribers — код модуля "Подписка на рассылку" (если он подключен)
feedback.twig
Шаблон страницы обратной связи. Переменные см. в all.twig
delivery.twig
Шаблон страницы оплаты и доставки
Включает те же переменные что и all.twig + body :
- deliveryPayment — ассоциативный массив
- payment — массив способов оплаты
- delivery — массив способов доставки
- deliveryTime — массив времени доставки
- begin — время открытия
- end — время закрытия
- days — массив дней работы
- delivery — география доставки
info.twig
Шаблон страницы информации о магазине. Переменные см. в all.twig
orders.twig
Шаблон страницы истории заказов пользователя
Включает те же переменные что и all.twig + body :
- orders — массив заказов
- id
- comment — комментарий
- created — дата заказа
- updated — дата обновления заказа
- currencies — массив валют
- bankCode — код валюты
- course — курс
- suffix — суффикс
- show — отображение
- delivery — объект доставки
- name — название
- description — описание
- cost — массив цен
- suffix — суффикс
- value — значение
- payment — объект оплаты
- name — название
- description — описание
- cost — массив цен
- suffix — суффикс
- value — значение
- status — объект статус заказа
- id
- description — описание
- name — название
- total — массив окончательная цена
- productPrices — массив цены на товары
- products — массив товаров
- itemCode — код
- sourceId — id товара
- name — название
- deliveryDays — количество дней под заказ
- icon — иконка
- url
- count — количество
- prices — массив цены
- totalPrices — массив окончательной цены
- data — массив групповых полей
- description — описание
- name — название
- value — значение
- group — объект с информацией о группе
- groupId
- name — название группы
- ordersCount — количество заказов
- pagination — объект для составления пагинации
cart
Директория содержит шаблоны оформления заказа.
stages.twig
Шаблон для страниц оформления заказа, который подключает другие шаблоны в зависимости от стадии, на которой находится покупатель.
Шаблон включает body :
- current — текущий этап(вид корзины)
- showItemCode — показывать код товара
- steps — массив шагов корзины и ступеней в нём
- stages — массив ступеней в этом этапе
- lastStage — последняя ступень на этом этапе
- shcart — ассоциативный массив корзины
- items — массив товаров
- id
- data_id — id страницы товара
- icon — иконка
- price — цена
- price_second — цена до скидки
- quantity — количество
- count — количество товаров на складе
- orderMinCount — минимальное количество для заказа
- size — размерность товара
- additional — дополнительное поле
- title — название
- url
- itemCode — код товара
- group — объект группы товара, по-умолчанию false (значения групповых полей можно получить по запросу через менеджера)
- id
- name — название группы
- typeId
- fields — массив групповых полей
- id
- name — имя группового поля
- title — название группового поля
- purposeId — id назначения
- displayable — отображать на странице товара
- typeId — id типа группового поля
- value — значение (если оно одно)
- id
- optionId
- pageId
- selectValue — значение, если список с выбором одного значения
- intValue — значение, если целое число
- floatValue — значение, если дробное число
- stringValue — значение, если строка, url, файл, изображение
- textValue — значение, если текст
- values — массив значений (если множественный выбор)
- id
- optionId
- pageId
- selectValue — значение
- modification - массив значений модификации
- optionTypeId - id типа значения (текст, цвет, картинка)
- name - название
- value - значение
- count — общее количество товаров в корзине
- goodStorage — включен ли учет остатков в настройках магазина
- currency — ассоциативный массив валюты
- currency — объект валюты
- id
- suffix — суффикс
- course — курс
- round — округление
- isShow — валюта Winshop (основная)
- defaultCourse — курс по-умолчанию
- isTermOfUse — включено ли "Пользовательское соглашение"
- banners — массив комментариев к шагам корзины
- paymentIds — массив id способов оплаты
- deliveryIds — массив id способов доставки
- deliveries.items — массив доставок
- data_id
- title — название
- description — описание
- allowancesLimit — сумма заказа, после которой надбавка не применяется
- allowances — надбавка
- position — позиция
- typeAllowances — тип надбавки
- types — массив доставок и оплат
- payments.items — массив оплат с ключами в виде id
- data_id
- name — название
- description — описание
- allowances — надбавка
- allowancesLimit — сумма заказа, после которой надбавка не применяется
- typeAllowances — тип надбавки
- position — позиция
- allFields — массив всех пользовательских полей с ключами в виде id ["title" => "Имя", "name" => "name"]
- fields — массив необходимых полей для возможных способов оплат и доставок с ключами в виде id способа доставки/оплаты
finish.twig
Шаблон включает body :
- shcart корзина см. в stages.twig
- data - объект заказа
- id - id заказа
- createdAt - дата и время заказа
- currencies - массив значений валюты
- bankCode - код валюты
- course - курс
- show
- suffix - суфикс валюты
- delivery - объект доставки
- cost - массив значения стоимости доставки
- suffix - суффикс валюты
- value - стоимость
- description - название способа доставки
- payment - массив значения стоимости доставки
- cost - массив значения стоимости оплаты
- suffix - суффикс валюты
- value - стоимость
- description - название способа оплаты
- paymentId - id способа оплаты
- products - массив товаров в заказе
- sourceId - id товара
- count - количество
- discount - цена до скидки
- icon - миниатюра
- itemCode - код товара
- name - название товара
- deliveryDays - количество дней под заказ
- prices - цена за штуку (массив)
- totalPrices - итоговая цена с учетом количества (массив)
- url
- sizeType - размерность
- modification - модификация
- optionTypeId - id типа
- name - название
- value - значение
- total - итоговая стоимость (массив)
- userData - массив пользовательских данных
- description - заголовок
- name - название поля
- value - значение
- isUserMail
- showItemCode - показывать ли код товара
compare
Директория содержит шаблоны страницы сравнения
compare.twig
Шаблон включает body :
- breadcrumbs
- data
- filterGroup — массив групп
- id
- name — название
- products — массив товаров (описание аналогичное примерами выше)
- id
- pageId
- name
- oldPrice
- price
- itemCode
- discountPercent
- statusId
- deliveryDays
- count
- images
- priceToShow
- oldPriceToShow
- page — объект с информацией о странице
- id
- url
- additionalInfo — объект с дополнительной информацией
- parentUrl
- position
- pageTypeId
- group — объект с информацией о группе
- id
- name
- typeId
- fields — массив групповых полей
- fields — массив значений групповых полей по id страницы
news
Директория содержит шаблоны новостей
news.twig
Шаблон включает body :
- breadcrumbs
- subscribers
- news — массив объектов
- id
- name — название новости
- body — текст
- data — дата
- meta — мета теги
- url
- firstImg — первая картинка
- newsVisibility — режим отображения
article.twig
Шаблон включает body :
- breadcrumbs -
- subscribers -
- article — объект
- id
- title — заголовок новости
- name — название новости
- body — текст
- data — дата
- meta — мета теги
- url
product
Директория содержит шаблоны товаров
product.twig
Шаблон включает:
- body
- breadcrumbs
- pageId
- subscribers - блок подписки на рассылку
- data
- shopInfo см. layout.info
- product объект с информацией о товаре
- id id товара
- pageId — id страницы товара
- name — название товара
- oldPrice — цена до скидки
- price — цена
- itemCode — код товара
- discountPercent — процент скидки
- statusId — статус товара (1 — Доступен, 2 — Нет на складе, 3 — Новинка, 4 — Под заказ)
- deliveryDays — дней под заказ
- vendorCode — код товара
- count — количество товаров на складе
- orderMinCount — минимальное количество для заказа
- sizeType — объект с информацией о размерности товара
- id
- title - название размерности
- modificationSettings — массив значений модификаций товара
- title - название
- fieldId - id группового поля
- options - возможные значения
- title -
- id
- type - id типа (текст, цвет, картинка)
- value - значение
- selected - выбрано или нет у данного товара
- images — массив изображений товара
- additionalInfo — объект дополнительной информации о товаре
- description — краткое описание
- fullDescription — полное описание
- fullName — полное название товара
- priceToShow — массив цены с учетом валюты
- suffix — суффикс валюты
- name — название валюты
- value — цена
- oldPriceToShow — массив цены до скидки с учетом валюты
- reviewSummary — объект с информацией по отзывам
- mark — оценка товара
- reviewCount — количество отзывов
- reviews — массив отзывов
- id
- accepted — одобрено
- comment — комментарий
- email
- helpful — положительных оценок отзыва
- helpless — отрицательных оценок отзыва
- mark — оценка
- name — имя написавшего
- negative — недостатки товара
- positive — положительные стороны товара
- updatedAt — дата
- userId — id пользователя
- page — объект с информацией о странице
- id
- url
- title
- metaTags — массив мета тегов
- additionalInfo — объект с дополнительной информацией о странице (см. описание выше)
- parentUrl
- position
- pageTypeId
- group — объект с информацией о группе
- id
- name
- typeId
- fields — массив полей группы
- relatedProducts — массив объектов product сопутствующих товаров
- isCompare — возможно ли сравнение
- mainCategory - информация о главной категории с групповыми полям (эти значения можно получить по запросу через менеджера)
- page
- id
- url
- title
- metaTags - массив объектов meta информации
- additionalInfo
- id
- pageId
- pageTypeId
- parentUrl
- position
- parentId
- group
- id
- name
- typeId
- fields - массив объектов групповых полей
- name
- id
- title
- typeId
- value
- id
- name
- pageId
- statusId
- itemCode
- productCount - кол-во товаров в категории
- images - массив объектов изображений
- isReviews — включенность отзывов
- showReviewsOnItemPage — показывать ли отзывы на странице товара
- fields — ассоциативный массив массивов значений групповых полей с ключами в виде раздела отображения
- title - навание поля
- value - значение
- type — id типа
sections
Директория содержит шаблоны категорий/секций
sections.twig
Шаблон включает:
- body
- breadcrumbs
- pageId
- pagination — объект для пагинации
- subscribers
- data
- category — объект с информацией о категории
- additionalInfo
- categoryId
- fullDescription - полное описание
- description - описание
- fullName - полное название
- filterGroupId — id группы для категории
- page
- id
- url - часть url
- title - title из SEO
- metaTags — массив мета тегов
- name - meta name
- value - meta value
- additionalInfo
- id
- pageId
- pageTypeId
- parentUrl
- position
- parentId
- group
- id
- name
- typeId
- fields - массив групповых полей у раздела
- id
- name
- title
- typeId
- value|values - значения группового поля
- id
- pageId
- intValue|floatValue|selectValue|textValue
- id
- name - название категории
- pageId
- statusId - id статуса
- itemCode - код категории
- productCount - количество товаров
- parentCategory - объект родительской категории
- images — массив изображений
- childCategoriesCount — массив объектов категорий внутри (см. описание выше)
- sectionFilter — ассоциативный массив с параметрами фильтра
- size — товаров на странице
- sort — сортировка
- activePage — активная страница
- arguments — аргументы
- productCount — количество товаров
- productList — массив объектов product (значения групповых полей можно получить по запросу через менеджера)
- shopInfo — см. layout.info
- filterGroupId — id группы для категории
- productsCount — количество товаров
- title — название категории
sitemap
Директория содержит шаблоны карты сайта
sitemap.twig
Шаблон включает body :
- breadcrumbs
- subscribers
- links — ассоциативный массив ссылок
- url либо name — url
- rus_name — название
- sitemap_status — отображение на странице карта сайта
Письма о заказе
Шаблон письма включает data :
- переменные см. в finish.twig
- siteInfo см. layout.info
- request - массив http параметров переданных в POST запросе на финишную страницу заказа