Вывод в теме
Обновлено
Автоматический вывод
В штатном оформлении блок подключается через хуки; отдельный вызов хелпера в теме для этого не требуется.
| Хук | Действие плагина |
|---|---|
frontend_head |
Подключает css/frontend.css, js/frontend.js и URL текущей витрины для запросов |
frontend_checkout |
Возвращает блок для пошагового оформления в обёртке #promogift-wrapper |
frontend_order_cart_vars |
Возвращает блок нового оформления в элементе bottom, также с обёрткой #promogift-wrapper |
frontend_order_cart_save |
Сбрасывает выбор, если купон снят или условия перестали выполняться |
order_action.create |
Добавляет подарки при создании заказа на витрине после повторной проверки условий |
HTML формирует метод shopPromogiftPlugin::getGiftsBlockHtml(). Класс shopPromogiftHelper содержит служебную логику проверки условий, подготовки данных и обработки Smarty. Отдельного класса *PluginViewHelper или *ViewHelper в продукте нет.
Для работы AJAX в теме должны сохраняться обёртка #promogift-wrapper и подключение ресурсов витрины. В браузере используется jQuery. Скрипт отслеживает кнопки купона .js-use-coupon, .js-cancel-coupon, отправку форм .checkout-step-coupon form, #coupon-form, событие wa_order_cart_changed и успешные AJAX-ответы с суммой корзины. При нестандартном оформлении разработчику нужно сверить эти точки подключения с темой.
Переопределение шаблона
- Возьмите за основу штатный файл
templates/actions/frontend/Gifts.htmlустановленного плагина. - Скопируйте его в каталог текущей темы Shop-Script с именем
promogift_plugin.gifts.html. - Вносите изменения в копию в теме.
Когда файл найден в текущей теме, плагин использует его вместо штатного. Для возврата к штатному виду удалите или переименуйте файл переопределения.
Данные шаблона
| Переменная | Назначение |
|---|---|
$show_guest_notice, $text_guest_notice |
Признак и готовый HTML уведомления для гостей |
$show_first_order_notice, $text_first_order_notice |
Признак и HTML уведомления о предыдущих заказах |
$show_stimul, $text_stimul |
Признак и HTML стимулирующего текста |
$promo |
Параметры акции в ветке вывода подарков |
$gifts |
Список подарков в ветке вывода подарков |
$max_gifts |
Лимит выбора |
$text_before, $text_after |
Уже обработанные Smarty тексты перед списком и после него |
$plugin_url |
URL статических файлов плагина |
Элемент $gifts содержит, в частности, product_id, gift_sku_id, product_name, sku_name, image_url, selected, а также данные product и sku. В ветках уведомлений используйте только соответствующие флаги и тексты: список подарков там заново не подготавливается.
Пример фрагмента для вставки в ветку списка подарков в скопированном шаблоне:
{if $text_before}
<div class="promogift-header">{$text_before}</div>
{/if}Пример безопасного вывода имени внутри цикла подарков:
<span class="promogift-name">{$gift.product_name|escape}</span>Сохранение интерактивного выбора
При изменении разметки сохраните:
- Контейнер
.promogift-giftsсdata-max-gifts,data-promo-idиdata-auto-select. - Поля
.promogift-checkbox, гдеvalueсодержитgift_sku_id, аdata-product-id— ID товара. - Скрытые поля при автовыборе и чекбоксы при ручном выборе.
- Обработку всех трёх вариантов уведомлений перед веткой подарков.
Скрипт отправляет выбор в promogift/select/ и получает HTML из promogift/block/; адреса строятся относительно текущей витрины. Это внутренние маршруты плагина, используемые его интерфейсом.
При ошибке Smarty в текстовом поле плагин записывает сообщение в shop/plugins/promogift.log и возвращает исходный текст поля. Исправьте синтаксис шаблона, если покупатель видит необработанные выражения.