Методы работы с корзиной
Страница оформления заказа
Сразу после установки модуля "Cart" (Корзина) необходимо создать файл-шаблон с названием cart.php. Подробнее о том, как это сделать, можно узнать в разделе: Шаблоны страниц.
Создать Инфо страницу с названием "Корзина" и присвоить ей шаблон "Корзина | Cart".
Глобальные методы.
Все параметры в корзине приходяит из POST запроса:
- g::cart()->addCart() - добавляет новый товар в корзину;
- g::cart()->updateCart() - обновляет новый товар в корзине;
- g::cart()->removeCartItem() - удаляет товар из корзины;
- g::cart()->clearCart() - очищает корзину;
- g::cart()->getCart() - получает корзину;
- g::cart()->orderCart() - формирует заказ, отправляет уведомление о выполнении заказа и отправляет в платежную систему информацию о корзине (если она подключена);
Подключение корзины на сайт.
Корзина полностью работает на JS и отрисовывает весь функционал, зачастую корзина настраивается индивидуально под определенный сайт, т.к. у каждого шаблона сайта есть свои особенности.
Методы корзины на стороне JS.
-
Чтобы добавить товар в корзину, нужно использовать класс в html
.miwix_add_to_cartи у кнопки добавления прописать data атрибутdata-product_id, чтобы реализовать возможность добавления определенного количества товара в корзину, необходимо добавить input с классом.numberи обернуть в общий div.<div class="cart-add-wrapp"> <input type="number" class="number" value="1" min="1"/> <button class="miwix_add_to_cart" data-product_id="1">В корзину</button> </div> -
Для подключения обновления корзины необходимо добавить класс
.cart_itemк элементу корзины и добавить data атрибут к данному элементуdata-idи записать туда hash товара из корзины. Чтобы правильно передать количество товаров, необходимо input положить в элемент с классом.quantity-selectorи input'у дать класс.number<div class="cart_item" data-id="ea0c7f38fafb3c089a0590a136b93a49"> <div class="quantity-selector"> <input type="number" class="number" value="1" min="1"/> </div> </div> -
Для удаления из корзины необходимо на кнопку удаления добавить класс
.remove-cart-itemвнутри div с классом.cart_item<div class="cart_item" data-id="ea0c7f38fafb3c089a0590a136b93a49"> <button class="remove-cart-item">x</button> </div> -
Так же в шаблоне корзины необходимо дать общий класс
.miwix_cart, так как с ним связано обновление остальных параметров из корзины, таких как обновление общей стоимости, стоимости доставки, стоимости товаров и т.д. выглядеть все должно примерно так:<div class="woocommerce"> <div class="items-wrapp"> <div class="cart_item" data-id="ea0c7f38fafb3c089a0590a136b93a49"> <div class="quantity-selector"> <input type="number" class="number" value="1" min="1"/> </div> <button class="remove-cart-item">x</button> </div> </div> <div class="calc-wrapp"> <div class="order-total"> <span>Стоимость товаров</span>: <span class="amount">120 руб</span> </div> <div class="order-shipping"> <span>Стоимость доставки</span>: <span class="amount">120 руб</span> </div> <div class="cart-subtotal"> <span>Итого</span>: <span class="amount">120 руб</span> </div> </div> </div>
Из примера, указанного выше, видно, что у каждого элемента amount есть родительский класс, по этому родительскому классу происходит поиск правильного значения из корзины и подставленные значения в
.order-total .amount
Настройка корзины.
Есть два типа на данный момент настройки корзины:
- В панели администратора MIWIX;
- В файле конфигурации:
- fields_required - тут указывается какие поля являются обязательными;
- name - поле name в input или select параметре;
- prompt - какой текст ошибки необходимо выдать при пустом поле;
- calc - используется для дополнительных полей подсчета (например: вес товаров);
- name - поле name в input или select параметре;
- prefix - какой префикс добавлять после цифр (например: кг);
Ключом массива будет являться ключ из фильтра товаров;
- fields - список полей, которые необходимо записывать в БД и отправлять на почту;
Массив fields состоит из ключ => значение, где ключ это name input, значение - это то, что будет приходить на почту;
Например: < input name="name" type="text" value="Иван" />
В массиве fields написано name => Имя
На почту придет Имя: Иван
- fields_required - тут указывается какие поля являются обязательными;
Учет остатка товара.
Для того чтобы ограничить добавление в корзину товара с нулевым остатком, можно использовать переменную из настроек модуля "Корзина". Одним из вариантов решения может служить условие if/else
if (g::settings('cart_stock')):
else:
endif;