Вопрос по коду. Как в этом моменте вывести массив товаров из подкатегории. Код: <?php foreach ($categories as $category) { ?> <a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a> ? <?php } ?> Код в категории где нет товаров, $products нужен из её подкатегории. Хелп плиз.
Вы думаете вся логика в шаблоне? Вам нужно в контроллере сделать запрос товаров для текущей категории и заполнить массив. Одной строкой не расскажешь, тем более в пятницу.
Заглянул в контроллер, там в продуктах фильтр по id-категории. Пока не могу разобраться, буду надеяться на помощь и ждать окончания пятниц )
Все еще с надеждой, что есть решение. Уже видел такое на многих сайтах. --Меню--___|____--Контент-- Активная Категория ___ | Активная категория скрытая подкатегория 1 | Подкатегория 1 скрытая подкатегория 2 | товар1 товар2 товар3 товар4 Категория_____________ | Подкатегория 2 Категория_____________ | товар1 товар2 товар3 товар4 Может у кого есть решение как сделать такую выдачу. Поделитесь пожалуйста.
на примере модуля категорий. 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 с товарами данной категории.
my2you, спасибо огромное!!! Пробую. Пока не удалось получить $products и загрузка страницы сильно замедлилась. UPD. Подскажите пожалуйста в какой файл добавлять код. Вставлял в catalog\controller\module\category.php , но переменной массива в category.tpl $products не появляется (( . Я не понимаю как сделать.
Почти решил проблему при помощи этой темы, надо ограничить вывод 4-мя товарами и вывести название подкатегории.