Методы работы с корзиной


Страница оформления заказа

Сразу после установки модуля "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>
    


Настройка корзины.

Есть два типа на данный момент настройки корзины:

  • В панели администратора MIWIX;
  • В файле конфигурации:
    • fields_required - тут указывается какие поля являются обязательными;
      • name - поле name в input или select параметре;
      • prompt - какой текст ошибки необходимо выдать при пустом поле;
    • calc - используется для дополнительных полей подсчета (например: вес товаров);
      • name - поле name в input или select параметре;
      • prefix - какой префикс добавлять после цифр (например: кг);
    • fields - список полей, которые необходимо записывать в БД и отправлять на почту;


Учет остатка товара.

Для того чтобы ограничить добавление в корзину товара с нулевым остатком, можно использовать переменную из настроек модуля "Корзина". Одним из вариантов решения может служить условие if/else

if (g::settings('cart_stock')):
else:
endif;