Skip to content
MiniShop3
MiniShop3
Современный компонент интернет-магазина для MODX 3
  1. Компоненты
  2. MiniShop3
  3. Сниппеты
  4. msOrderTotal

msOrderTotal

Сниппет для получения итоговой информации о текущей корзине и заказе. Используется для мини-корзины в шапке сайта.

Кэширование

Сниппет работает с сессией пользователя и должен вызываться некэшированно (!msOrderTotal).

Параметры

ПараметрПо умолчаниюОписание
tpltpl.msOrderTotalЧанк оформления
returntplФормат: data (массив), tpl (рендеринг чанка)

Чанк по умолчанию

Чанк tpl.msOrderTotal не поставляется с компонентом. Для вывода через чанк создайте его самостоятельно или используйте return=data.

Примеры

Получение данных

fenom
{set $total = '!msOrderTotal' | snippet : ['return' => 'data']}

{if $total.total_count > 0}
    В корзине: {$total.total_count} товаров на {$total.cart_cost} руб.
{/if}

Мини-корзина в шапке

fenom
{set $cart = '!msOrderTotal' | snippet : ['return' => 'data']}

<a href="/cart/" class="header-cart">
    <span class="cart-icon">🛒</span>
    <span class="cart-count" data-ms-cart-count>{$cart.total_count}</span>
    <span class="cart-total" data-ms-cart-total>{$cart.cart_cost}</span> руб.
</a>

С использованием чанка

fenom
{'!msOrderTotal' | snippet : [
    'tpl' => 'tpl.myMiniCart'
]}

Структура данных

Сниппет возвращает массив с итогами корзины и заказа:

ПолеОписание
costИтого к оплате (товары + доставка + комиссия оплаты)
cart_costСтоимость товаров
delivery_costСтоимость доставки
payment_costКомиссия за способ оплаты
total_countОбщее количество товаров
total_costСтоимость товаров (дубль cart_cost)
total_weightОбщий вес
total_discountСумма скидки
total_positionsКоличество позиций (уникальных товаров)
php
[
    'cost' => 8100,            // Итого к оплате
    'cart_cost' => 7500,       // Стоимость товаров
    'delivery_cost' => 300,    // Стоимость доставки
    'payment_cost' => 300,     // Комиссия оплаты (например, 4%)
    'total_count' => 5,        // Общее количество товаров
    'total_cost' => 7500,      // Стоимость товаров
    'total_weight' => 2500,    // Общий вес (граммы)
    'total_discount' => 500,   // Сумма скидки
    'total_positions' => 3,    // Количество позиций
]

Разница между cost и cart_cost

  • cart_cost — стоимость только товаров в корзине
  • cost — итоговая сумма к оплате: товары + доставка + комиссия оплаты

Плейсхолдеры в чанке

При использовании return=tpl в чанк передаются все поля как плейсхолдеры:

fenom
{* tpl.myMiniCart *}
<div class="mini-cart" data-ms-minicart>
    {if $total_count > 0}
        <a href="/cart/" class="mini-cart-link">
            <span class="mini-cart-count">{$total_count}</span>
            <span class="mini-cart-cost">{$cart_cost}</span> руб.
        </a>
    {else}
        <span class="mini-cart-empty">Корзина пуста</span>
    {/if}
</div>

Автообновление

Для автоматического обновления мини-корзины при изменениях используйте data-атрибуты:

html
<span data-ms-cart-count>0</span>
<span data-ms-cart-cost>0</span>
<span data-ms-cart-total>0</span>

JavaScript MiniShop3 автоматически обновит эти элементы при:

  • Добавлении товара в корзину
  • Изменении количества
  • Удалении товара
  • Очистке корзины

Полный пример мини-корзины

fenom
{set $cart = '!msOrderTotal' | snippet : ['return' => 'data']}

<div class="mini-cart" data-ms-minicart>
    <a href="/cart/" class="mini-cart-link d-flex align-items-center gap-2">
        <svg width="24" height="24" fill="currentColor">
            <use xlink:href="#icon-cart"/>
        </svg>
        <span class="mini-cart-info">
            {if $cart.total_count > 0}
                <span class="mini-cart-count" data-ms-cart-count>{$cart.total_count}</span> шт.
                <span class="mini-cart-cost" data-ms-cart-cost>{$cart.cart_cost}</span> ₽
            {else}
                <span class="text-muted">Корзина пуста</span>
            {/if}
        </span>
    </a>
</div>

Отличие от msCart

msOrderTotalmsCart
Только итоговые данныеПолная корзина с товарами
Лёгкий, быстрыйЗагружает данные всех товаров
Для мини-корзины в шапкеДля страницы корзины
Минимум данныхВсе поля товаров, опции, превью