Сниппет упрощенной корзины товаров в Commerce





Сниппет упрощенной корзины товаров в Commerce

Сей сниппет хорош тем, что предусматривает склонение слов в зависимости от того, сколько товаров в корзине.

function simple_commerce_cart() {
  global $user;
  $order = commerce_cart_order_load($user->uid);
  if(!empty($order)) {
    $wrapper = entity_metadata_wrapper('commerce_order', $order);
    $line_items = $wrapper->commerce_line_items;
    $total = commerce_line_items_total($line_items);
    $currency = commerce_currency_load($total['currency_code']);
    $quantity = commerce_line_items_quantity($line_items, commerce_product_line_item_types());
    $summ = commerce_currency_format($total['amount'], $total['currency_code']);
    static $prods=array(' товар на ', ' товара на ', ' товаров на ');
    $numberLast=intval(substr(strval($quantity),-1,1));
    $numberPreLast=intval(substr(strval($quantity),-2,2));
    if(($numberLast==1) and ($numberPreLast!=11)){
      $type=0;
    }elseif((2<=$numberLast) and ($numberLast<=4)){
      $type=1;
    }elseif(($numberLast==0) or ((5<=$numberLast) and ($numberLast<=9)) or((11<=$numberPreLast) and ($numberPreLast<=19))){
      $type=2;
    }
    print  l(t('В вашей корзине'),'cart',  array('attributes' => array('class' => array('cart-link')))) . '<span class="total-prods">' . $quantity  . $prods[$type] . '<span class="user-total-price">' . $summ . '</span></span>';
  }
  else {
    print l(t('Корзина пуста'),'cart',  array('attributes' => array('class' => array('cart-link'))));
  }
}

Ну и соответственно выводим его в page.tpl.php:
<?php print simple_commerce_cart(); ?>





Комментарии

Откройте для себя модуль локализации и @count, буквально 3 строчки в словаре позволяют полностью избавиться от кучи проверок на количество товара.

/node/2664
/forum/3817#comment-878

Спасибо, покручу его на выходных.

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

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
Drupal
26
11 '12 — 23:35:57