Кошик викликається на всіх сторінках, де необхідна робота магазину - додавання, редагування та видалення товарів.
Порада: кошик - це обгортка для сніппета 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" | Елемент, після натискання на який відбувається очищення кошика |