Корзина вызывается на всех страницах, где необходима работа магазина -- добавление, редактирование и удаление товаров.
Совет: корзина - это обёртка для сниппета DocLister и в ней работают практически все его параметры.
Как это может пригодиться?
Скажем, вы хотите показывать в корзине фотографию товара. Пускай она хранится в ТВ с именем mainphoto
. Как и в DocLister, вам необходимо указать сниппету, что в выборку включается это тв при помощи параметра &tvList=mainphoto
.
[!Cart
&instance=`products`
&theme=``
&tpl=`tpl`
&optionsTpl=`optionsTpl`
&ownerTPL=`ownerTPL`
&subtotalsRowTpl=`subtotalsRowTpl`
&subtotalsTpl=`subtotalsTpl`
!]
Больше примеров вы можете найти в папке
assets/plugins/commerce/templates/front/
Шаблон обёртки корзины
<div data-commerce-cart="[+hash+]">
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<td colspan="2">[%cart.item_title%]</td>
<td>[%cart.count%]</td>
<td class="text-xs-right">[%cart.item_price%]</td>
</tr>
</thead>
<tfoot>
[+subtotals+]
<tr>
<td class="text-xs-right" colspan="4">[%cart.total%]:</td>
<td class="text-xs-right">[[PriceFormat? &price=`[+total+]` &convert=`0`]]</td>
</tr>
</tfoot>
<tbody>
[[if? &is=`[+count+]:>:0` &then=`
[+dl.wrap+]
` &else=`
<tr>
<td colspan="3" class="text-xs-center">
[%cart.no_items%]
</tr>
`]]
</tbody>
</table>
</div>
[[if? &is=`[+count+]:>:0` &then=`
<div class="text-xs-right">
<p><a href="28.html">[%cart.to_checkout%]</a></p>
</div>
`]]
</div>
Совет: для вывода различных шаблонов пустой или полной корзины вы можете воспользоваться любым сниппетом, который сможет проверить плейсхолдер [+count+]
:
[[if? &is=`[+count+]:>:0` &then=`ШАБЛОН ПОЛНОЙ КОРЗИНЫ`
&else=`ШАБЛОН ПУСТОЙ КОРЗИНЫ`]]
Шаблон одного товара в корзине
<tr data-id="[+id+]" data-commerce-row="[+row+]">
<td>
<img src="[[phpthumb? &input=`[+tv.mainphoto+]` &options=`w=80,h=80,zc=1,f=png`]]" class="img-fluid" alt="[+e.title+]">
<td>
<a href="[+url+]">[+name+]</a>
<div class="small text-muted">
[+options+]
</div>
<td>
<input type="text" name="count" class="form-control" value="[+count+]" data-commerce-action="recount">
<button type="button" data-commerce-action="decrease">-</button>
<button type="button" data-commerce-action="increase">+</button>
<button type="button" data-commerce-action="remove">x</button>
<td class="text-xs-right">
[!PriceFormat? &price=`[+price+]` &convert=`0`!]
<td class="text-xs-right">
[!PriceFormat? &price=`[+total+]` &convert=`0`!]
</tr>
Обёртка для доп. опций типа "Доставка"
[+wrap+]
Один пункт в доп. опциях
<tr>
<td class="text-xs-right" colspan="3">[+title+]:</td>
<td class="text-xs-right" colspan="1">[[PriceFormat? &price=`[+price+]` &convert=`0`]]</td>
</tr>