[Помогите] Количество товара на складе вывести в каталог 2.0.3.1

Тема в разделе "OpenCart", создана пользователем DjLenosh, 6 авг 2015.

  1. DjLenosh

    DjLenosh

    Регистрация:
    14 дек 2014
    Сообщения:
    4
    Симпатии:
    0
    И так поставлена задача вывести в каталог количество оставшегося товара на складе, рыл сеть, толком для 2.0.3.1 не нашел но пошел по следующему пути:

    1. Подрубил языковой файл в category.php
    $this->load->language('product/product');

    2. Добавил Product_info в category.php
    if ($product_info['quantity'] <= 0) {
    $data['stock'] = $product_info['stock_status'];
    } elseif ($this->config->get('config_stock_display')) {
    $data['stock'] = $product_info['quantity'];
    } else {
    $data['stock'] = $this->language->get('text_instock');
    }


    3. Добавил в него же
    $data['text_stock'] = $this->language->get('text_stock');

    По идее все верно и с ним я покончил далее перешел уже выводить на саму страницу добавил вот этот кусок кода в category.tpl
    <div class="first-text">
    <div class="boss-small-detail">
    <ul class="list-unstyled">
    <li><span class="first-text"><?php echo $text_stock; ?></span><span class="boss-stock"> <?php echo $stock; ?></span></li>
    </ul></div>


    Этот кусок кода я выдрал с product.tpl и как мне подсказывает интуиция в этом и есть мой косяк

    [​IMG]

    То есть сама строка "Наличие" есть но вот количество не отображается ну и предупреждение естественно от том что где то провтыкал переменную "... Undefined variable: product_info in ..."

    Большая просьба подсказать где именно допущена ошибка ну и как ее исправить?

    Заранее всем огромное спасибо кто откликнется!
     
    Lasted edited by : 6 авг 2015
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Странно, что вы смогли до всего этого додуматься, а такую мелочь не заметили.
    Посмотрите откуда у вас в категории берутся, например, названия товаров. Там нет массива $product_info, он есть только на странице товара. На групповых страницах товары выводятся циклом
    PHP:
    foreach ($products as $product) {
    /*
        вывод одного товара
    */
    }
     
    DjLenosh нравится это.
  3. DjLenosh

    DjLenosh

    Регистрация:
    14 дек 2014
    Сообщения:
    4
    Симпатии:
    0
    Эммм немного непонятно, вернее совсем не понятно)))
     
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Да, как-то я всё в кучу свалил.
    Посмотрите /catalog/controller/product/category.php, там есть такая строка:
    PHP:
    $results $this->model_catalog_product->getProducts($filter_data);
    А после неё циклом идёт обработка по каждому товару.

    А вы скопировали код из /catalog/controller/product/product.php, где подобного назначения строка выглядит так:
    PHP:
    $product_info $this->model_catalog_product->getProduct($product_id);
    И обрабатывается результат без цикла, потому что там только один товар.

    В общем, вам надо переместить ваш код в цикл и заменить $product_info на $result.

    И $data['stock'] использовать нельзя. Массив $data глобальный для текущей страницы. В случае со страницей товара, где один товар, все значения относятся к этому товару, но в категориях товар не один, а вы таким образом запишите значение для одного товара, который обработается в цикле последним.

    В цикле есть вот такой код:
    PHP:
                    $data['products'][] = array(
                        
    'product_id'  => $result['product_id'],
                        
    'thumb'       => $image,
                        
    'name'        => $result['name'],
                        
    'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES'UTF-8')), 0$this->config->get('config_product_description_length')) . '..',
                        
    'price'       => $price,
                        
    'special'     => $special,
                        
    'tax'         => $tax,
                        
    'minimum'     => $result['minimum'] > $result['minimum'] : 1,
                        
    'rating'      => $result['rating'],
                        
    'href'        => $this->url->link('product/product''path=' $this->request->get['path'] . '&product_id=' $result['product_id'] . $url)
                    );
    Всё, что нужно вывести для товара в категории дописывайте сюда.
     
    DjLenosh нравится это.