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

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

Обновлено

Глобальные параметры темы 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.theme_modeРежим темы (auto / light / dark)

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

// 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

Какие настройки доступны по умолчанию

Тема выводит в JavaScript не все настройки, а только те, которые читают её собственные скрипты, — 19 ключей, около 1,2 КБ. Так сделано ради скорости: значения всех настроек — это ещё примерно 145 КБ разметки на каждой странице. Обращение к настройке, которой в списке нет, вернёт undefined.

  • apps__shop_common_notification_cart_type_buttons
  • apps__shop_common_notification_compare_type_buttons
  • apps__shop_common_notification_wishlist_type_buttons
  • apps__shop_common_product_added_notification_position_type_buttons
  • cart__common_comment_open
  • catalog__product_dialog_display_type_buttons
  • catalog__products_grid_video_play_mode_type_buttons
  • common__common_set_mobile_type_number
  • common__targets_ya_add2cart
  • common__targets_ya_add2compare
  • common__targets_ya_add2wishlist
  • common__targets_ya_id
  • header__blocks_search_shortcut
  • other__cookies_button_text
  • other__cookies_enabled
  • other__cookies_text_type_wysiwyg
  • other__cookies_title
  • personal__signup_allow_html_labels
  • product__blocks_skus_available

Как получить остальные настройки

Если вашему скрипту нужна настройка не из этого списка, включите в настройках темы Прочее → JavaScript API → «Выводить в JavaScript все настройки темы». Тогда в settings попадут значения всех настроек темы — около 1130 ключей. Форма записи не меняется, обращение через .value продолжает работать.

Цена — примерно 145 КБ разметки на каждой странице (около 18 КБ в сжатом виде), поэтому по умолчанию настройка выключена. Включайте её, когда своя настройка действительно нужна, а не «на всякий случай».

Примеры

// Тип уведомления о добавлении в корзину — доступно по умолчанию
window.waTheme?.themesettings?.settings?.apps__shop_common_notification_cart_type_buttons?.value

// Шрифт темы — нужно включить вывод всех настроек
window.waTheme?.themesettings?.settings?.common__design_font_family?.value

// Ключ можно передать и строкой
window.waTheme?.themesettings?.settings?.['common__common_set_mobile_type_number']?.value

Текущий шрифт темы доступен и без вывода всех настроек — отдельным свойством:

window.waTheme.themesettings.font_family

Под администратором видно больше, чем у посетителя

Панель управления темой на витрине дописывает в window.waTheme.themesettings.settings полную схему настроек — с названиями, описаниями и группами. Панель показывается администратору сайта, а в режиме предпросмотра — всем посетителям.

Из-за этого в консоли под администратором видны все настройки, даже когда «Выводить в JavaScript все настройки темы» выключено. Проверяйте свой код в анонимном окне или под обычным посетителем — иначе легко написать обращение к настройке, которой у посетителей нет.

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

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

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

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

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

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

globalHeaderHideTitle — для лендингов: сам H1 скрыт, но блок выводится ради хлебных крошек. Его устанавливает page.html, когда у страницы задан параметр hide_title=1.

{* Скрыть весь блок заголовка (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 подставляется заголовок товара. В product.html это параметр товара h1, если он задан, иначе название; в product.cart.html фоллбэка на 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 собирает из них свойства блока сам; отдельной глобальной для переопределения свойств в теме нет.

Для отдельной категории макет блока задаётся без кода — дополнительным параметром категории subcategories_type со значением 1, 2 или 3, подробнее в статье «Страница категории». Остальные настройки блока на отдельных страницах меняются подменой настроек темы — статья «Подмена настроек темы дизайна».

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

{$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, если баннер показан