Продвинутые функции

Глобальные параметры

Глобальные параметры темы Seller 2.0 позволяют управлять отображением элементов страниц: шапкой, подвалом, заголовком H1, хлебными крошками, сайдбаром и другими компонентами. Параметры задаются в Smarty-шаблонах с помощью $wa->globals() — тема читает их при сборке страницы в index.html и связанных шаблонах.

Объект window.waTheme

Тема Seller 2.0 предоставляет глобальный JavaScript-объект window.waTheme, содержащий основную информацию о сайте и теме.

Основные свойства

СвойствоОписание
site_urlURL сайта
app_idID текущего приложения
app_urlURL текущего приложения
localeОбъект с переводами и локализацией
theme.idИдентификатор темы
theme.urlURL темы
theme.versionВерсия темы
theme.licenseПризнак Premium-лицензии («1» или пустая строка)
theme.theme_modeРежим темы (auto / light / dark)
license.is_premium / license.is_standartФлаги редакции темы (отдельный объект window.waTheme.license)

Пример обращения к свойствам

// URL сайта
window.waTheme.site_url

// Версия темы
window.waTheme.theme.version

// Режим темы
window.waTheme.theme.theme_mode

Настройки темы через window.waTheme.themesettings

Все настройки темы доступны в виде JSON-объекта:

window.waTheme.themesettings.settings

Каждая настройка содержит свойство value с текущим значением. Паттерн доступа:

window.waTheme?.themesettings?.settings?.{key}?.value

Примеры

// Получить значение настройки скругления элементов
window.waTheme?.themesettings?.settings?.common__design_elements_rounded_type_buttons?.value

// Получить значение настройки шрифта
window.waTheme?.themesettings?.settings?.common__design_font_family?.value

// Проверить настройку уведомлений корзины
window.waTheme?.themesettings?.settings?.['apps__shop_common_notification_cart_type_buttons']?.value

Глобальные Smarty-параметры

Шапка и подвал

{* Скрыть шапку сайта *}
{$wa->globals("hideHeader", true)}

{* Скрыть подвал темы *}
{$wa->globals("hideFooter", true)}

Заголовок страницы (H1)

Блок заголовка выводится шаблоном html/header/global/header.layout.html, если задан хотя бы один из параметров globalHeader, globalHeaderCustom или globalHeaderHTML. Приоритет: globalHeaderCustomglobalHeaderHTMLglobalHeader.

{* Скрыть весь блок заголовка (H1 + хлебные крошки) *}
{$wa->globals("hideGlobalHeader", true)}

{* Задать текст заголовка *}
{$wa->globals("globalHeaderCustom", "Мой заголовок страницы")}

{* Произвольная HTML-разметка вместо стандартного H1 *}
{$wa->globals("globalHeaderHTML", '<h1 class="text-2xl md:text-4xl text-theme">Мой заголовок</h1>')}

{* Выравнивание: "center" — по центру (только на десктопе; на мобильных заголовок всегда слева), иначе — слева (по умолчанию) *}
{$wa->globals("globalHeaderAlign", "center")}

{* Текст описания под заголовком *}
{$wa->globals("globalHeaderDescription", "Описание под заголовком")}

{* Описание под заголовком с произвольной HTML-разметкой *}
{$wa->globals("globalHeaderDescriptionHTML", '<p>Описание с <strong>выделением</strong></p>')}

Описания (globalHeaderDescription и globalHeaderDescriptionHTML) выводятся только на первой странице пагинации. Для globalHeaderDescription дополнительно работает обрезание по строкам из настройки catalog__categories_category_description_cut_lines с кнопкой «Показать полностью».

Страница товара сама скрывает блок заголовка только на мобильных — в product.html (и в product.cart.html) вызов {$wa->globals("hideGlobalHeader", true)} обёрнут в {if !empty($is_mobile)}. На десктопе блок выводится, а в globalHeader подставляется заголовок товара: параметр товара h1, если он задан, иначе название. Чтобы убрать блок и на десктопе, установите hideGlobalHeader в своём шаблоне.

Хлебные крошки

{* Скрыть хлебные крошки *}
{$wa->globals("hideBreadcrumbs", true)}

{* Задать последний пункт хлебных крошек *}
{$wa->globals("lastBreadcrumb", ["url" => $wa->currentUrl(), "name" => "Название хлебной крошки"])}

Последний пункт выводится при включённой настройке темы «Показывать последний пункт» (common__breadcrumbs_last).

Сайдбар

{* Скрыть сайдбар *}
{$wa->globals("hideSidebar", true)}

{* Не подключать шаблон sidebar приложения (вывод плагинов) *}
{$wa->globals("sidebarHidePlugins", true)}

{* Показать сайдбар справа от контента *}
{$wa->globals("sidebarEnd", true)}

{* Вывести блоки сайдбара горизонтальной полосой над контентом *}
{$wa->globals("sidebarBeforeContent", true)}

Параметр sidebarWidgets подменяет набор блоков сайдбара. Значение — строка JSON (массив нужно предварительно прогнать через |json_encode) с элементами формата, который использует html/sidebar/sidebar.layout.html: active, name, template, app, custom, classes:

{$wa->globals("sidebarWidgets", '{"0":{"active":true,"name":"Страницы","template":"html/sidebar/blocks/pages","app":"site","custom":false,"classes":""}}')}

Шаблоны штатных блоков сайдбара лежат в html/sidebar/blocks/: html/sidebar/blocks/pages, html/sidebar/blocks/shop-tags, html/sidebar/blocks/shop-banner, html/sidebar/blocks/my-nav.

Так, например, блог темы подставляет в сайдбар собственный набор блоков:

{$wa->globals("sidebarWidgets", $theme_settings["apps__blog_sidebar_sorting_type_json"])}

Существует также параметр sidebarWidgetsBefore — он читается темой в u-vars.html при определении, пуст ли сайдбар (пустой сайдбар автоматически скрывается).

Контент

Вывести только шаблон main приложения — без контейнера, сетки и сайдбара (так работает главная страница магазина и страницы авторизации):

{$wa->globals("mainOnly", true)}

Категория

Показать или скрыть блок подкатегорий:

{$wa->globals("showSubcategories", true)}
{$wa->globals("hideSubcategories", true)}

Подменить список выводимых категорий — например, показать не дочерние категории текущей, а произвольный набор:

{$wa->globals("customSubcategories", $my_categories)}

Внешний вид блока — тип отображения, число элементов, изображения, поведение на мобильных — задаётся не из шаблона, а настройками темы группы catalog__subcategories_display_*: ..._show, ..._type, ..._limit, ..._products_count, ..._image_group, ..._mobile_scroll, ..._type_mobile. Шаблон html/category/subcategories.html собирает из них свойства блока сам; отдельной глобальной для переопределения свойств в теме нет.

Списки товаров

{$wa->globals("productsView", "table")}

Значение соответствует имени шаблона в html/products/ темы магазина: grid, list, table, short, swiper, swiper_compare, swiper_short, swiper_slider. На мобильных устройствах допустимы только grid, swiper, swiper_compare и swiper_short; остальные значения — в том числе list, table, short и swiper_slider — заменяются на grid.

Шапка поверх контента и баннеры

{* Позиционировать десктопную шапку поверх контента (absolute) *}
{$wa->globals("headerAbsolute", true)}

{* Тёмное оформление шапки (добавляет класс dark) *}
{$wa->globals("headerDark", true)}

Эти параметры использует, например, блок слайдера: при типе slider_04 он сам устанавливает headerAbsolute, чтобы шапка легла поверх слайдера.

Служебные параметры баннера над шапкой (media__header_above_*) выставляет сама тема — их можно читать в своих шаблонах:

ПараметрКогда установлен
headerBannerBeforeShowБаннер над шапкой показан; при headerAbsolute шапка смещается вниз на его высоту
headerBannerBeforeHideБаннер скрыт (закрыт посетителем, спрятан по cookie)
headerAbsoluteWithBannerУстанавливается слайдером slider_04 вместе с headerAbsolute, если баннер показан