Вывод товаров из корзины на другие страницы

Добрый день.

Вывожу в index.html товары из корзины:

{foreach $cart.items as $item}
<div class="zak" data-id="{$item.id}">
<div class="nm">{$item.product.name|escape}
{if $item.sku_name && $item.sku_name != $item.product.name}{$item.sku_name|escape}{/if}</div>
<div class="kvo">- {$item.quantity} х {shop_currency($item.full_price, true)}</div>
</div>

{if !empty($item.error)}<script>alert('{$item.error|escape}');</script>{/if}
{/foreach}

Подключаем cart.js для всех страниц на сайте, но товары из корзины не выводятся.

Подскажите, реально ли вывести товары из корзины?
Адрес сайта: http://damafon.com

6 ответов

  • 1
    В index.html не загружается переменная $cart. Данные получить можно только используя класс-хелпер. Идея описана здесь: http://www.webasyst.ru/developers/docs/helpers/custom-helpers/

    То есть в шаблоне будет что-то вроде такого:

    {$cart_items = shopCustom::getCartItems()}

    После этого по элементам $cart_items надо пробежаться циклом, как у вас в примере.

    Класс shopCustom с методом getCartItems() придётся создать самостоятельно. Пример формирования списка товаров в корзине можно посмотреть тут:
    lib/actions/frontend/shopFrontendCart.action.php
  • 1

    Файл shopFrontendCartHelper.class.php в папку classes,

    содержимое:


    <?php
    
    class shopFrontendCartHelper
    {
    
       public static function getCartItems()
       {
           $code = waRequest::cookie('shop_cart');
           if (!$code) {
               return array();
           }
           $cart = new shopCart($code);
           $rows = $cart->items();
           $items = array();
           foreach($rows as $row) {
               $item = array();
               foreach (array('id', 'product_id', 'name', 'quantity', 'sku_id', 'sku_code', 'sku_name') as $key) {
                   $item[$key] = $row[$key];
               }
               $p = $row['product'];
               $item['image_url'] = shopImage::getUrl(array(
                   'product_id' => $row['product_id'],
                   'filename' => $p['image_filename'],
                   'id' => $p['image_id'],
                   'ext' => $p['ext']
               ), "96x96");
               $item['frontend_url'] = wa()->getRouteUrl('shop/frontend/product', array(
                   'product_url' => $p['url'], 'category_url' => ifset($p['category_url'], '')));
               $item['price'] = self::currencyFormat($row['price'], $row['currency']);
               $price = shop_currency($row['price'] * $row['quantity'], $row['currency'], null, false);
               $item['services'] = array();
               if (!empty($row['services'])) {
                   foreach ($row['services'] as $s) {
                       $item_s = array();
                       foreach (array('id', 'parent_id', 'name', 'quantity', 'service_id', 'service_name', 'service_variant_id', 'variant_name') as $key) {
                           if (isset($s[$key])) {
                               $item_s[$key] = $s[$key];
                           }
                       }
                       $item_s['price'] = self::currencyFormat($s['price'], $s['currency']);
                       $price += shop_currency($s['price'] * $s['quantity'], $s['currency'], null, false);
                       $item['services'][] = $item_s;
                   }
               }
               $item['full_price'] =self::currencyFormat($price, true);
               $items[] = $item;
           }
           return $items;
       }
        public static function currencyFormat($val, $currency = true, $html = false)
        {
            return $html ? shop_currency_html($val, $currency) : shop_currency($val, $currency);
        }
    }
    

    использование:

    {$items = shopFrontendCartHelper::getCartItems()}

    Работает по всему магазину!!!

  • 0
    sitennov 18 ноября 2013 03:04 #
    Неужели никто не делал?
  • 0
    sitennov 19 ноября 2013 06:47 #
    Скажите, сколько может стоить создание такого класс-хелпера?
  • 0
    sitennov 21 ноября 2013 23:48 #
    Кто готов взяться за доработку?
  • 0
    Алексей как вы в итоге реализовали вывод корзины?

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите