Студия разработки сайтов и приложений

Netspark.ru

Заметки и разработки

Drupal

Упрощенная корзина для Drupal Commerce

Некоторых по вполне логичным причинам не устраивает стандартный блок корзины в 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-у — напишу позже.

Комментарии