Некоторых по вполне логичным причинам не устраивает стандартный блок корзины в Drupal Commerce. Хочется не выводить все понапиханные в нее товары, а вывести только, скажем, одну строку. В которой должно быть только число товаров в корзине и сумма, на которую набрано. Ну и ссылки на саму корзину и оформление товара.
Вот php-код с реализацией такой укороченной корзины. Его надо вставить в блок.
global $user;
$order = commerce_cart_order_load($user->uid);
if (empty($order) || empty($order->commerce_line_items)) {
print t('Your shopping cart is empty.');
return;
}
$wrapper = entity_metadata_wrapper('commerce_order', $order);
$line_items = $wrapper->commerce_line_items;
$total = commerce_line_items_total($line_items);
$quantity = commerce_line_items_quantity($line_items, commerce_product_line_item_types());
print t('Your shopping cart contains !items on !money total', array('!items' => format_plural($quantity, '@count product', '@count products'), '!money' => commerce_currency_format($total['amount'], $total['currency_code'])));
print l(t('Cart'), 'cart') . ' ' . l(t('Checkout'), 'checkout');
Обращаю внимание — число товаров в корзине переведено правильным, годным образом, через format_plural()
. HTML-разметку блока можно менять как нравится.
А о том, как обновлять этот новый блок по AJAX-у — напишу позже.