Вывод кнопок и формы
Обновлено
Автоматический вывод
Плагин регистрирует три обработчика:
| Хук | Что выводит | Настройка |
|---|---|---|
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» → «Выводить форму». Если требуется ручное подключение:
- Установите «Вывод формы в head» → «Не выводить» для нужного набора настроек.
- В общем шаблоне витрины, например
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