К содержимому
Вывод в теме

Вывод кнопок и формы

Обновлено

Автоматический вывод

Плагин регистрирует три обработчика:

Хук Что выводит Настройка
frontend_head Данные формы, CSS и JS «Вывод формы в head» → «Выводить форму»
frontend_product, область cart Кнопку товара «Вывод по хуку в карточке товара» → «Выводить кнопку»
checkout_render_confirm Кнопку заказа текущей корзины «Вывод по хуку в оформлении заказа» → «Выводить кнопку»

Тема должна выводить результат соответствующего хука. Автоматического хука для кнопок в категориях нет: добавьте вызов getButton() в шаблон списка.

Кнопка товара: getButton($product, $status = "new")

Передайте текущий товар Shop-Script: массив или объект shopProduct с данными товара. Кнопка использует ID товара и артикула, название, изображение и данные доступности артикулов.

В карточке товара или внутри существующего цикла товаров, где текущий товар доступен как $product:

{if !empty($wa->shop->ewshopqorderPlugin->version())}
    {$wa->shop->ewshopqorderPlugin->getButton($product)}
{/if}

Если переменная текущего товара в шаблоне называется иначе, подставьте её. Хелпер не создаёт список товаров самостоятельно.

Для ручного размещения в карточке отключите «Вывод по хуку в карточке товара», чтобы не получить дополнительную кнопку от хука. Подключение формы оставьте включённым либо выполните его вручную, как описано ниже.

Второй параметр: действие после создания заказа

По умолчанию передаётся new. При другом значении сервер вызывает действие workflow Shop-Script с этим ID для уже созданного заказа. Несмотря на название $status, это именно ID действия, а не произвольное название статуса.

Схема вызова:

{* Замените ACTION_ID на ID существующего действия workflow магазина. *}
{if !empty($wa->shop->ewshopqorderPlugin->version())}
    {$wa->shop->ewshopqorderPlugin->getButton($product, "ACTION_ID")}
{/if}

Действие должно существовать и быть применимо к новому заказу. Не копируйте ACTION_ID буквально. Параметр также используется режимом «Товары без остатка» → «Не отключать кнопку со статусом»: разрешается кнопка с непустым значением, отличным от new.

Кнопка корзины: getButtonCart()

Добавьте вызов в шаблон корзины в месте, где нужна кнопка заказа всех её позиций:

{if !empty($wa->shop->ewshopqorderPlugin->version())}
    {$wa->shop->ewshopqorderPlugin->getButtonCart()}
{/if}

У метода нет параметров. После успешного создания заказа из корзины она очищается. Сценарий оформления части позиций этот хелпер не задаёт: сервер берёт текущие позиции shopCart.

Подключение формы: getForm()

Обычно достаточно «Вывод формы в head» → «Выводить форму». Если требуется ручное подключение:

  1. Установите «Вывод формы в head» → «Не выводить» для нужного набора настроек.
  2. В общем шаблоне витрины, например index.html, перед закрывающим </body> добавьте вызов:
{if !empty($wa->shop->ewshopqorderPlugin->version())}
    {$wa->shop->ewshopqorderPlugin->getForm()}
{/if}

Подключайте форму один раз на страницу. getForm() возвращает данные формы и подключения CSS/JS; JavaScript добавляет разметку модального окна в конец body при инициализации. После переноса проверьте форму как для гостя, так и для вошедшего покупателя.

Все три хелпера учитывают «Статус плагина» и настройки текущей витрины.

Выбор артикула и количество

JS плагина отслеживает изменения форм с product_id и sku_id, а также выбор по features[...]; нажатия элементов с data-sku-id обрабатываются в контексте их формы. В нестандартной теме проверьте, что после переключения в заказ попадает выбранный артикул.

Количество из формы товара плагин не считывает. Если нужен заказ с заданными количествами, используйте сценарий текущей корзины.

Шаблоны и оформление

В установленном плагине используются:

Файл относительно каталога плагина Назначение
templates/actions/frontend/FrontendButton.html Кнопка товара и данные для JS
templates/actions/frontend/FrontendButtonCart.html Кнопка корзины
templates/actions/frontend/FrontendHeader.html Разметка модального окна, параметры и подключение ресурсов

Хелперы и обработчики читают эти файлы непосредственно из каталога плагина. Автоматическое переопределение одноимённым файлом темы в коде не предусмотрено. Правки установленных файлов могут быть заменены обновлением; для оформления используйте «Класс кнопки» и CSS темы.

Для цветов доступны CSS-переменные:

--ewshopqorder-button-bg
--ewshopqorder-button-color
--ewshopqorder-form-button-bg
--ewshopqorder-form-button-color