Coder Social home page Coder Social logo

evocart's Introduction

evoCart

включает в себя:

  • корзину
  • модуль заказов
  • модуль персональных скидок для веб-пользователей (как общих, так и комбинированных, типа на категорию и/или бренд)

особенности

  • работа через аякс через плагин на событие 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

установка

  1. скачать (https://github.com/gadev/evoCart/archive/master.zip)

  2. установить через extras (Установка из архива)

  3. проверить конфигурацию плагина evoCart

  4. добавить в хэдер или футер вывод кешированного сниппета evoCart с указанием cartId (id документа с корзиной/формой заказа)

        [[evoCart? &cartId=`32`]]
  5. для вывода данных корзины использовать "служебные" 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>
  6. для добавления товара в корзину к элементу/кнопке "купить" прописать 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]);
```

evocart's People

Contributors

gadev avatar

Watchers

James Cloos avatar D.Tsombolov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.