WD5 - разработка сайтов

Вариант корзины для модуля commerce (drupal)

Модуль commerce для создания интернет магазина на drupal по умолчанию предоставляет расширенный вариант корзины, который можно редактировать через views, а можно воспользоваться старым способом и сделать все через php код в шаблонах.

Ниже представлен пример корзины для русскоязычного варианта магазина, в коде жестко заданы значения слов. Вариант данного сниппета учитывает склонение в зависимости от количества в корзине (1 товар, 2 товара, 10 товаров)

В файл template.php нужной темы добавляем


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

добавляем следующий код

 <!-- корзина -->
<?php print simple_commerce_cart(); ?>

не забываем очищать кеш после изменения шаблона, если нет изменений, даже если кеширование не включено.

None