Корзина заказов

    Корзина вызывается на всех страницах, где необходима работа магазина -- добавление, редактирование и удаление товаров.

    Совет: корзина - это обёртка для сниппета DocLister и в ней работают практически все его параметры.

    Как это может пригодиться? Скажем, вы хотите показывать в корзине фотографию товара. Пускай она хранится в ТВ с именем mainphoto. Как и в DocLister, вам необходимо при помощи параметра &tvList=mainphoto указать сниппету, что в выборку включается ТВ.

    Пример вызова

    [!Cart
        &instance=`products`
        &tvList=`image`
    !]

    Параметры

    Параметр Описание
    instance

    Тип корзины.

    С помощью сниппета можно вывести корзину с товарами, либо списки избранного или сравнения. Соответственно, значение может быть products, wishlist или comparison. Значение по умолчанию - products

    Данные значения предустановлены. Если нужны другие списки, их можно создать в плагине на событие OnInitializeCommerce:

    ci()->carts->addCart(new \Commerce\Carts\ProductsList($modx, 'listname'));
    theme

    Префикс имени шаблонов.

    По умолчанию пустое значение. Можно использовать для темизации корзины, чтобы не указывать все шаблоны по отдельности. Может быть либо префиксом имен файлов, либо именем вложенной папки (тогда в конце нужно указать слэш).

    Изначально доступны шаблоны без префикса и с префиксом "mini", например minicart_wrap и пр. - для миникорзины.

    tpl

    Шаблон строки корзины, соответствует такому же параметру DocLister

    Помимо стандартных, в шаблоне доступны следующие плейсхолдеры:
    [+original_title+] - название товара из таблицы site_content,
    [+hash+] - хэш-код строки,
    [+count+] - количество данного товара,
    [+price+] - цена товара,
    [+total+] - полная стоимость данного товара,
    [+options+] - опции товара (обработанные или нет, зависит от параметра defaultOptionsRender).

    ownerTPL

    Шаблон обертки корзины, соответствует такому же параметру DocLister

    Помимо стандартных, в шаблоне доступны следующие плейсхолдеры:
    [+hash+] - хэш-код козины,
    [+items_price+] - суммарная стоимость товаров,
    [+total+] - полная стоимость корзины, с учетом дополнительных сборов,
    [+subtotals+] - дополнительные сборы,
    [+count+] - число товаров в корзине,
    [+rows_count+] - число строк в корзине,
    [+settings+] - массив настроек плагина Commerce.

    noneTPL

    Шаблон пустой корзины.

    optionsTpl

    Шаблон строки опций товара. Имеет смысл только при &defaultOptionsRender=`1`. Подразумевается, что опции товара заданы как массив пар ключ => значение.

    В шаблоне доступны следующие значения:
    [+key+] - ключ,
    [+option+] - значение опции.

    defaultOptionsRender

    Нужно ли рендерить опции товара. Принимает значения 0 или 1, по умолчанию - 1.

    Если структура опций имеет более сложный формат, можно поставить значение 0, а опции обрабатывать в prepare.

    subtotalsTpl

    Шаблон обертки для дополнительных сборов.

    subtotalsRowTpl

    Шаблон строки дополнительных сборов.

    Доступные следующие плейсхолдеры:
    [+title+] - название,
    [+price+] - цена.

    prepareSubtotalsWrap

    prepare для обертки дополнительных сборов, действие аналогично параметру prepareWrap

    prepareSubtotalsRow

    prepare для строк дополнительных сборов, действие аналогично параметру prepare

    Остальные параметры абсолютно аналогичны таковым в сниппете DocLister.

    Шаблоны

    Все шаблоны по умолчанию лежат в папке assets/plugins/commerce/templates/front/. Чтобы изменить вид корзины, можно указать свои чанки с помощью параметров сниппета, либо скопировать все чанки корзины в новую папку и указать имя папки в параметре theme.

    Не изменяйте чанки по умолчанию напрямую - так при обновлении вы потеряете все изменения.

    Схема шаблона корзины

    В разметке корзины должны быть обязательные атрибуты, необходимые для корректной работы скриптов.

    <... data-commerce-cart="[+hash+]">
        <... data-id="[+id+]" data-commerce-row="[+row+]" ...>
            <input type="text" name="count" value="[+count+]" data-commerce-action="recount">
            <... data-commerce-action="decrease" .../>
            <... data-commerce-action="increase" .../>
            <... data-commerce-action="remove" .../>
        </...>
    
        <... data-commerce-action="clean" .../>
    </...>      
    data-commerce-cart="[+hash+]"Атрибут обертки корзины, все содержимое данного тега обновляется при изменениях в корзине
    data-id="[+id+]"Идентификатор товара, присваивается строке корзины
    data-commerce-row="[+row+]"Хеш-код строки корзины, используется для обновления данных в этой строке
    data-commerce-action="recount"Поле с количеством товара
    data-commerce-action="decrease"Элемент, по нажатию на который происходит уменьшение товара в строке на 1
    data-commerce-action="increase"Элемент, по нажатию на который происходит увеличение товара в строке на 1
    data-commerce-action="remove"Элемент, по нажатию на который происходит удаление строки из корзины
    data-commerce-action="clean"Элемент, по нажатию на который происходит очистка корзины