Drupal → Упрощённая корзина в Commerce

18.01.2014

Пример вывода упрощённого блока корзины, состоящего из количества товаров, общей суммы и ссылки на /cart:

1. Добавить в template.php:

/**
 * Preprocess variables for commerce-cart-block.tpl.php
 */
function THEMENAME_preprocess_commerce_cart_block(&$vars) {
  $order_wrapper = entity_metadata_wrapper('commerce_order', $vars['order']);
  $quantity = commerce_line_items_quantity($order_wrapper->commerce_line_items, commerce_product_line_item_types());
  $quantity_text = format_plural($quantity, '@count item', '@count items', array(), array('context' => 'product count on a Commerce order'));
  $total = $order_wrapper->commerce_order_total->value();
  $total_text = commerce_currency_format($total['amount'], $total['currency_code']);

  $vars['contents_view'] = t('@quantity for @amount', array('@quantity' => $quantity_text, '@amount' => $total_text)) . '<br />';
  $vars['contents_view'] .= l(t('Show cart'), 'cart');
}

2. Сбросить кэш.

Profit.

Будет корректно обновляться при добавлении товаров с помощью AJAX.

Написанное актуально для
Commerce 1.x
Похожие записи

Комментарии

Мария Шерскова
11.04.2014, 19:07

В сочетании с ajax кнопкой добавления товара в корзину в код внедряется div.

http://joxi.ru/9ANIUxjKTJC4A7qmPNw - при загрузке страницы код чистый.
А после код уже выглядит так: http://joxi.ru/aARIU_3JTJCYBWsnSzA

Откуда этот div может взяться? В шаблоне корзины оставила только вывод содержимого карты, грешила на свой шаблон. Но дело вроде как не в нем.

Заранее благодарю за помощь :)

это особенность какой-то ajax-команды, не помню какой

Мария Шерскова
11.04.2014, 22:23

В любом случае, спасибо за полезности :)

разобрался с лишним div-ом — в ajax_command_replace() нужно отправлять html без пробелов в начале и конце:

$commands = array(
  '#type' => 'ajax',
  '#commands' => array(
    ajax_command_replace('#block-commerce-cart-cart', trim(render(...))),
  ),
);
Гость
20.06.2014, 22:07

а как можно убрать десятичные цифры из такого вывода?

Александр
12.09.2014, 13:56

Почему-то, когда в корзине 21, 31, 41 товар и так далее, то всегда отображается 1 товар в корзине. Хотя при открытии корзины отображается верное значение.

Также нет подписей для русскоязычных сайтов
1 товар и для всех остальных "n товаров" это не верно.

Артем
20.07.2015, 11:53

Уважаемый xandeadx!
Во-первых, позвольте выразить безмерную благодарность за ваш труд!

Во-вторых, будьте добры, просветите, как адаптировать данный код под русский язык, ведь у нас, помимо item и items есть еще и третий вариант.

Как реализовать нормальный вывод информации, в соответствии с правилами русского языка?
1 товар
2 товара
5 товаров

Кирилл
22.07.2015, 16:18

Присоединяюсь к вопросу про русский язык!
Помогите пожалуйста!!!

Василий
14.05.2016, 15:25

Артем, Кирилл, напишите так:
Количество: 10
Стоимость (На сумму): 5000 руб. (USD)

Гость
29.06.2016, 23:58

А как слова - Shoping cart , сделать ссылкой на карту?

Добавить комментарий