- корзину
- модуль заказов
- модуль персональных скидок для веб-пользователей (как общих, так и комбинированных, типа на категорию и/или бренд)
- работа через аякс через плагин на событие onPageNotFound (поэтому, если у вас есть другие плагины на это событие, после установки убедитесь, чтобы он был первым в списке "Порядок вызова плагинов" на событие onPageNotFound)
- никакой доп верстки – все js-экшены, параметр и выводы привязаны css-классам (типа .js-ec-total, .js-ec-add и т.д)
- в комплекте идет все, что необходимо для запуска корзины в несколько кликов
- на данный момент работает строго с modx-документами, т.е. с фронта приходит только id товара. при необходимости можно передать кол-во, и любые доп опции
- у товара обязательно должен быть tv-параметр price
- все параметры из карточки товара передаются через элемент с классом .js-ec-add, параметры указываются в data-аттрибутах:
- data-id (обязателен),
- data-count (необязателен, если 1),
- все остальное - что вам угодно: data-color="красный", data-size="XL" (они будут доступны в корзине ввиде плейсхолдеров data.color, data.size)
- передавать tv-параметры товара через data-аттрибуты не нужно, их надо указать в настройках плагина evoCart и использовать в чанке evoCartRow и prepare-сниппете prepareEvoCart
- вывод корзины осуществляется через DocLister и его prepare-функции (prepareEvoCart)
- доставка по select'ам из формы заказа (.js-ec-delivery и .js-ec-city) обрабатывается в плагине evoCartShippingDsq (он выключен и там есть пример)
- работа с формой заказа и его запись в БД осуществляется черезFormLister и его prepare-функции (prepareEvoCartForm)
- Evolution CMS 1.4.5
- DocLister
- FormLister
-
скачать (https://github.com/gadev/evoCart/archive/master.zip)
-
установить через extras (Установка из архива)
-
проверить конфигурацию плагина evoCart
-
добавить в хэдер или футер вывод кешированного сниппета evoCart с указанием cartId (id документа с корзиной/формой заказа)
[[evoCart? &cartId=`32`]]
-
для вывода данных корзины использовать "служебные" css-селекторы:
- .js-ec-ifempty - блок, который скрывается при пустой корзине
- .js-ec-container - общая обертка корзины
- .js-ec-cart - блок вывода товаров в корзине
- .js-ec-total - сумма заказа
- .js-ec-dsq - сумма скидки
- .js-if-delivery - отображается, если есть доставка
- .js-ec-shipping - сумма доставки
- .js-ec-itogo - итого
для мини-корзины:
- .js-ec-qty - кол-во товаров в корзине
- .js-ec-qty-txt - товар/товара/товаров
помимо этого на странице корзины добавить чанк формы оформления заказа - evoCartForm
примерно так:
<div class="js-if-empty"> <div class="cart js-ec-container"> <div class="cart__items js-ec-cart"></div> <div class="cart__result"> <div class="total-price">Сумма заказа: <b><span class="js-ec-total"></span></b></div> <div class="total-price">Скидка: <b><span class="js-ec-dsq"></span></b></div> <div class="total-price js-if-delivery">Доставка: <b><span class="js-ec-shipping"></span></b></div> <div class="total-price">Итого: <b><span class="js-ec-itogo"></span></b></div> </div> </div> <div class="cart__form"> {{evoCartForm}} </div> </div>
-
для добавления товара в корзину к элементу/кнопке "купить" прописать css-селектор .js-ec-add и добавить data-аттрибут data-id="idтовара".
<a class="btn js-ec-add" data-id="[+id+]">В корзину</a>
для рассчета суммы доставки используется плагин evoCartShippingDsq (по-умолчанию он выключен и там есть пример работы). он оперирует суммой заказа и размером скидки. так же в него можно передать тип заказа и адрес. для этого в чанке evoCartForm для полей типа доставки и адреса надо добавить селекторы .js-ec-delivery и .js-ec-city соответственно. таким образом, при их изменении пересчет суммы доставки и итоговой суммы будет происходить автоматически исходя из указанных вами условий в плагине evoCartShippingDsq
на данном этапе это просто таблица с инфой по заказу и изменяемым-статусом вывод осуществляется через DocLister и prepare-сниппет prepareEvoCartOrders
по сути это решение PageBuilder (https://github.com/mnoskov/pagebuilder), которое подключено к веб-пользователям с небольшими правками и необходимым конфигом (pluguins/evoCartDiscounts/config/discounts.php) – настройки вывода категорий и брендов там. Для применения скидки после авторизации веб-пользователя надо закинуть данные его персональной скидки в сессию:
```
include_once MODX_BASE_PATH . 'assets/plugins/evoCartDiscounts/core.php';
$pb = new evoCartDiscounts($modx);
$_SESSION['discounts'] = $pb->render(['user_id' => 1]);
```