Товары из дочерней категории в массив

Тема в разделе "Общие вопросы", создана пользователем Ruzanoff, 6 ноя 2015.

  1. Ruzanoff

    Ruzanoff Новичок

    Сообщения:
    11
    Симпатии:
    5
    Вопрос по коду. Как в этом моменте вывести массив товаров из подкатегории.
    Код:
    <?php foreach ($categories as $category) { ?>
                <a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
          ?
                <?php } ?>
    Код в категории где нет товаров, $products нужен из её подкатегории.
    Хелп плиз.
     
  2. my2you

    my2you Продвинутый пользователь

    Сообщения:
    281
    Симпатии:
    125
    Вы думаете вся логика в шаблоне? Вам нужно в контроллере сделать запрос товаров для текущей категории и заполнить массив. Одной строкой не расскажешь, тем более в пятницу.
     
    Ruzanoff и optimlab нравится это.
  3. Ruzanoff

    Ruzanoff Новичок

    Сообщения:
    11
    Симпатии:
    5
    Заглянул в контроллер, там в продуктах фильтр по id-категории. Пока не могу разобраться, буду надеяться на помощь и ждать окончания пятниц )
     
  4. Ruzanoff

    Ruzanoff Новичок

    Сообщения:
    11
    Симпатии:
    5
    Все еще с надеждой, что есть решение. Уже видел такое на многих сайтах.

    --Меню--___|____--Контент--
    • Активная Категория ___ | Активная категория
    • скрытая подкатегория 1 | Подкатегория 1
    • скрытая подкатегория 2 | товар1 товар2 товар3 товар4
    • Категория_____________ | Подкатегория 2
    • Категория_____________ | товар1 товар2 товар3 товар4
    Может у кого есть решение как сделать такую выдачу. Поделитесь пожалуйста.
     
  5. my2you

    my2you Продвинутый пользователь

    Сообщения:
    281
    Симпатии:
    125
    на примере модуля категорий. catalog\controller\module\category.php

    после
    PHP:
                $filter_data = array(
                    
    'filter_category_id'  => $category['category_id'],
                    
    'filter_sub_category' => true
                
    );

    вставим
    PHP:
    $this->load->model('tool/image');
                
    $products = array();
                
    $results $this->model_catalog_product->getProducts($filter_data);

                foreach (
    $results as $result) {
                    if (
    $result['image']) {
                        
    $image $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
                    } else {
                        
    $image $this->model_tool_image->resize('placeholder.png'$this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
                    }

                    if ((
    $this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
                        
    $price $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
                    } else {
                        
    $price false;
                    }

                    if ((float)
    $result['special']) {
                        
    $special $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
                    } else {
                        
    $special false;
                    }

                    if (
    $this->config->get('config_tax')) {
                        
    $tax $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);
                    } else {
                        
    $tax false;
                    }

                    if (
    $this->config->get('config_review_status')) {
                        
    $rating = (int)$result['rating'];
                    } else {
                        
    $rating false;
                    }
                   
                    
    $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,
                        
    'rating'      => $result['rating'],
                        
    'href'        => $this->url->link('product/product''path=' $category['category_id'] . '&product_id=' $result['product_id'])
                    );
                }

    ну и ниже добавим в массив с категориями
    PHP:
    'products'    => $products,

    В итоге получим для каждой категории в массиве, массив products с товарами данной категории.
     
    Ruzanoff и optimlab нравится это.
  6. Ruzanoff

    Ruzanoff Новичок

    Сообщения:
    11
    Симпатии:
    5
    my2you, спасибо огромное!!!
    Пробую. Пока не удалось получить $products и загрузка страницы сильно замедлилась.

    UPD.
    Подскажите пожалуйста в какой файл добавлять код. Вставлял в catalog\controller\module\category.php
    , но переменной массива в category.tpl $products не появляется (( . Я не понимаю как сделать.
     
    Последнее редактирование: 11 ноя 2015
  7. Ruzanoff

    Ruzanoff Новичок

    Сообщения:
    11
    Симпатии:
    5
    Почти решил проблему при помощи этой темы, надо ограничить вывод 4-мя товарами и вывести название подкатегории.