xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

Пример вывода упрощённого блока корзины, состоящего из количества товаров, общей суммы и ссылки на /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
Похожие записи

Комментарии RSS

Спасибо, тоже на днях потребовалась упрощенная корзина, реализовал с помощью модуля http://www.drupalcommerce.org/extensions/sandbox/project/commerce-compac..., придется переделать

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

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

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

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

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

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

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

$commands = array(
  '#type' => 'ajax',
  '#commands' => array(
    ajax_command_replace('#block-commerce-cart-cart', trim(render(...))),
  ),
);

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

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

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

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

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

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

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

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

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

l(t('Show cart'), 'cart');

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании