Управление товарами в корзине
Плагин добавляет чекбоксы к товарам в корзине. Клиент оформляет заказ только из выбранных позиций, а невыбранные остаются в корзине для следующего заказа. Недоступные товары автоматически исключаются и не блокируют оформление заказа.
Возможности
- Чекбоксы у каждого товара в корзине + панель «Выбрать все / Снять все»
- Невыбранные товары отображаются в списке с возможностью вернуть в заказ одним кликом
- Недоступные к заказу товары автоматически выносятся из корзины и показываются отдельным блоком
- Недоступные товары можно удалить из корзины: выбранные чекбоксами — кнопкой «Удалить выбранные», либо все сразу — кнопкой «Удалить все»
- Отложенные товары («не пойдёт в заказ») тоже удаляются: по одному крестиком у строки или все сразу одной кнопкой
- Удаление недоступных и отложенных включается и выключается отдельными настройками плагина
- Если товар снова стал доступен — автоматически возвращается в корзину
- После оформления заказа невыбранные товары возвращаются в корзину
- Доставка, скидки и итоговая сумма пересчитываются по выбранным позициям
Преимущества
- Работает из коробки — не требует интеграции с плагинами скидок, доставки или оплаты
- Не пересчитывает суммы самостоятельно — всё считает сам Shop-Script, без задержек и конфликтов
- Совместим с любыми плагинами скидок, купонов и бонусов без дополнительных настроек
Одностраничное оформление заказа работает из коробки. Пошаговая корзина подключается за два шага: вывести плагин в шаблоне
cart.htmlи разметить в нём места для чекбоксов и блоков. Второй шаг обязателен: в стандартных темах такой разметки нет, и без неё плагин на странице ничего не покажет.
Пошаговая корзина, шаг 1: вывести плагин
В одностраничном оформлении плагин подключается сам. Для пошаговой корзины вставьте код в шаблон корзины вашей темы — файл cart.html. Хелпер проверяет через version(), что плагин установлен и включён, — при удалении плагина тема не сломается:
{if !empty($wa->shop->ewshopmpcartPlugin->version())}
{$wa->shop->ewshopmpcartPlugin->cart()}
{/if}
Хелпер выводит стили, скрипт и инициализацию плагина. Если тема уже печатает результаты хука frontend_cart — плагин подключится через него, отдельный вызов хелпера не нужен:
{foreach $frontend_cart as $_}{$_}{/foreach}
Пошаговая корзина, шаг 2: разметить места в cart.html
Плагин не переверстывает корзину темы — он вставляет свои части туда, куда вы укажете. Места отмечаются классами-крючками, оформления на них нет:
- js-ewmpcart-row — строка товара. На ней же нужны data-product-id и data-sku-id: по ним плагин понимает, какой товар в строке;
- js-ewmpcart-cbslot — куда в строке встанет чекбокс. Необязательный: без него чекбокс встаёт первым элементом строки и позиционируется по её левому краю;
- js-ewmpcart-panel-slot — панель «Выбрано N из M»;
- js-ewmpcart-unchecked-slot — блок «Не пойдёт в заказ»;
- js-ewmpcart-unavailable-slot — блок «Недоступны к заказу».
Слоты — пустые элементы, плагин наполняет их содержимым. Ставьте только те, что нужны: чего нет, то не показывается.
<div class="js-ewmpcart-panel-slot"></div>
{foreach $cart.items as $item}
<div class="row js-ewmpcart-row" data-product-id="{$item.product_id}" data-sku-id="{$item.sku_id}">
<span class="js-ewmpcart-cbslot"></span>
<!-- изображение, название, количество, цена -->
</div>
{/foreach}
<div class="js-ewmpcart-unchecked-slot"></div>
<div class="js-ewmpcart-unavailable-slot"></div>
Оформление у блоков своё, вёрстку темы они не ломают: в слоте лежит обычный элемент, который можно красить и двигать средствами темы.
Свой дизайн в теме
Плагин рисует четыре части: чекбокс у товара в корзине, панель «Выбрано N из M», блок отложенных или недоступных товаров и строку внутри такого блока. Любую из них можно отрисовать в стиле своей темы — скопируйте нужный шаблон из каталога plugins/ewshopmpcart/templates/actions/frontend/ в корень активной темы дизайна:
Checkbox.html → ewshopmpcart_plugin.checkbox.html — чекбокс у товара в корзине Panel.html → ewshopmpcart_plugin.panel.html — панель «Выбрано N из M» Excluded.html → ewshopmpcart_plugin.excluded.html — блок отложенных и недоступных Product.html → ewshopmpcart_plugin.product.html — строка товара внутри блока
Любому шаблону можно задать отдельный вид для режимов оформления — добавьте в имя .cart (пошаговая корзина) или .order (одностраничное оформление), например ewshopmpcart_plugin.product.order.html. Специфичный шаблон побеждает общий.
Что именно нужно сохранить, перечислено в комментарии в начале каждого шаблона: несколько классов с приставкой js-ewmpcart- и data-атрибуты товара — по ним плагин находит свои элементы. Оформления на этих классах нет, поэтому вёрстку и стили можно менять свободно, ничего не перебивая.
Если тема подменила все шаблоны и оформляет их сама, оформление плагина можно вовсе не подключать — выключите настройку «Подключать оформление плагина». Учтите, что вместе с ним уходит и раскладка: положение чекбокса в строке, отступ строки под него, всплывающая подсказка и затемнение корзины на время запроса — их придётся описать в теме.
Если в теме уже есть разметка одностраничного оформления
Слоты можно не расставлять: плагин сам найдёт список товаров по разметке checkout2 — контейнер .wa-products, строки .wa-product с data-атрибутами. Тогда панель выбора встаёт перед списком, блоки «не пойдёт в заказ» и «недоступны к заказу» — после него, а чекбоксы — в начало каждой строки.
<div class="wa-products">
<div class="wa-product" data-id="{$item.id}" data-product-id="{$item.product_id}" data-sku-id="{$item.sku_id}">
<div class="wa-product-body"> <!-- изображение, название, цена --> </div>
</div>
</div>
Мы в социальных сетях
Узнавайте первыми о наших новых решениях и акциях.
- Вконтакте - https://vk.com/easyweb_su
- Телеграм - https://t.me/easyweb_su









