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

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

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

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

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

[!Cart
    &instance=`products`
    &theme=``
    &tpl=`tpl`
    &optionsTpl=`optionsTpl`
    &ownerTPL=`ownerTPL`
    &subtotalsRowTpl=`subtotalsRowTpl`
    &subtotalsTpl=`subtotalsTpl`
!]

Примеры чанков

Больше примеров вы можете найти в папке

assets/plugins/commerce/templates/front/

ownerTPL

Шаблон обёртки корзины

<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=`ШАБЛОН ПУСТОЙ КОРЗИНЫ`]]

tpl

Шаблон одного товара в корзине

<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>

subtotalsTpl

Обёртка для доп. опций типа "Доставка"

[+wrap+]

subtotalsRowTpl

Один пункт в доп. опциях

<tr>
    <td class="text-xs-right" colspan="3">[+title+]:</td>
    <td class="text-xs-right" colspan="1">[[PriceFormat? &price=`[+price+]` &convert=`0`]]</td>
</tr>
Mem: 3.75 mb, MySQL: 0.0027 s, 3 req., PHP: 0.0382 s, all: 0.0408 s, cache.