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

Вывод в теме

Обновлено

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

В штатном оформлении блок подключается через хуки; отдельный вызов хелпера в теме для этого не требуется.

Хук Действие плагина
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-ответы с суммой корзины. При нестандартном оформлении разработчику нужно сверить эти точки подключения с темой.

Переопределение шаблона

  1. Возьмите за основу штатный файл templates/actions/frontend/Gifts.html установленного плагина.
  2. Скопируйте его в каталог текущей темы Shop-Script с именем promogift_plugin.gifts.html.
  3. Вносите изменения в копию в теме.

Когда файл найден в текущей теме, плагин использует его вместо штатного. Для возврата к штатному виду удалите или переименуйте файл переопределения.

Данные шаблона

Переменная Назначение
$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 и возвращает исходный текст поля. Исправьте синтаксис шаблона, если покупатель видит необработанные выражения.