Приветствую! Хочу вывести название главной категории в карточке товара. Нашёл решение с выводом всех категорий, присвоенных конкретному товару. В данном случае их три (первый скриншот). Но нужно вывести только Главную. В контроллере product/product.php такой код: (скриншот 3 для понятного восприятия) $data['catprod'] = array(); $product_category = $this->model_catalog_product->getCategories($product_id); foreach ($product_category as $catprod){ $category_info = $this->model_catalog_category->getCategory($catprod['category_id']); if ($category_info) { $data['catprod'][] = array( 'name' => $category_info['name'], 'image' => '/image/'.$category_info['image'], 'href' => $this->url->link('product/category', 'path=' . $category_info['category_id']) ); } } в шаблоне выводится так: <?php foreach ($catprod as $catp) { ?><a href="<?php echo $catp['href']; ?>"><?php echo $catp['name']; ?></a><?php } ?><img src="<?php echo $catp['image']; ?>" /> на сайте выводится так - скриншот 2 что нужно дописать, чтобы вывести только главную категорию?
после Код: foreach ($product_category as $catprod){ добавьте Код: if (!$catprod['main_category']) continue;
спасибо большое, всё отлично сработало! помогите пожалуйста то же самое в админке сделать - вывести в списке товаров ГЛАВНУЮ категорию к каждому товару. я воспользовался этой инструкцией: мануал. но там выводятся все категории, присвоенные товару (скриншот 1). по вашему совету в цикл foreach вставил if (!$result['main_category']) continue; но это не помогло. ничего не выводится, а список товаров полностью исчезает. что нужно поменять в этом коде? или может в другом месте? и для удобства - скрин 2 foreach ($results as $result) { if (!$result['main_category']) continue; if (is_file(DIR_IMAGE . $result['image'])) { $image = $this->model_tool_image->resize($result['image'], 40, 40); $categories = $this->model_catalog_product->getProductCategoriesName($result['product_id']); $categories = implode('<br>', $categories); } else { $image = $this->model_tool_image->resize('no_image.png', 40, 40); }
спасибо, Помогло! у меня завершающий вопрос по категориям/товарам. В карточке товара нужно вывести все товары из этой же категории. т.е. все дочерние товары. есть модуль "рекомендованные товары", но он уже занят под другие цели. поставил модуль Similar Products 4.1.14. но он работает неверно - выводит товары как-то рандомно. нашёл манул, там выводятся вообще все товары. но взял его за основу. подскажите, что поменять в этом коде (скриншот 1), чтобы выводились товары из текущей категории? $results = $this->model_catalog_product->getProducts($filter_data); - в этой строке не подхватывается ID категории и выводятся вообще все имеющиеся товары. Думаю здесь в фильтре загвоздка. у меня opencart версии 2.1.0.1. Весь код целиком: $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); $filter_data = array( 'filter_category_id' => $category_id ); $data['products_variant'] = array(); $results = $this->model_catalog_product->getProducts($filter_data); foreach ($results as $result) { if ($result['image']) { $image = 'image/' . $result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } $data['products_variant'][] = array( //'category_id' => $category_id, 'name' => $result['name'], 'image' => $image, 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } заранее спасибо!