Корзина вызывается на всех страницах, где необходима работа магазина -- добавление, редактирование и удаление товаров.
Совет: корзина - это обёртка для сниппета DocLister и в ней работают практически все его параметры.
Как это может пригодиться?
Скажем, вы хотите показывать в корзине фотографию товара. Пускай она хранится в ТВ с именем mainphoto
. Как и в DocLister, вам необходимо при помощи параметра &tvList=mainphoto
указать сниппету, что в выборку включается ТВ.
[!Cart
&instance=`products`
&tvList=`image`
!]
Параметр | Описание |
---|---|
instance |
Тип корзины. С помощью сниппета можно вывести корзину с товарами, либо списки избранного или сравнения. Соответственно, значение может быть Данные значения предустановлены. Если нужны другие списки, их можно создать в плагине на событие ci()->carts->addCart(new \Commerce\Carts\ProductsList($modx, 'listname')); |
theme |
Префикс имени шаблонов. По умолчанию пустое значение. Можно использовать для темизации корзины, чтобы не указывать все шаблоны по отдельности. Может быть либо префиксом имен файлов, либо именем вложенной папки (тогда в конце нужно указать слэш). Изначально доступны шаблоны без префикса и с префиксом "mini", например minicart_wrap и пр. - для миникорзины. |
tpl | Шаблон строки корзины, соответствует такому же параметру DocLister Помимо стандартных, в шаблоне доступны следующие плейсхолдеры: |
ownerTPL | Шаблон обертки корзины, соответствует такому же параметру DocLister Помимо стандартных, в шаблоне доступны следующие плейсхолдеры: |
noneTPL | Шаблон пустой корзины. |
optionsTpl | Шаблон строки опций товара. Имеет смысл только при &defaultOptionsRender=`1`. Подразумевается, что опции товара заданы как массив пар ключ => значение. В шаблоне доступны следующие значения: |
defaultOptionsRender | Нужно ли рендерить опции товара. Принимает значения 0 или 1, по умолчанию - 1. Если структура опций имеет более сложный формат, можно поставить значение 0, а опции обрабатывать в prepare. |
subtotalsTpl | Шаблон обертки для дополнительных сборов. |
subtotalsRowTpl | Шаблон строки дополнительных сборов. Доступные следующие плейсхолдеры: |
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" | Элемент, по нажатию на который происходит очистка корзины |