Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

OpenCart 2.2: Вывести названия категорий и ссылки на них в карточке товара


Recommended Posts

Привет. Хочу вывести все категории товара на странице этого товара. Не нашел полного решения под Opencart 2 ни в рунете, ни буржунете.

Проверил решение для Opencart 1.5. По описанию — именно то, что надо, но не работает на 2.2, к сожалению.

Получилось вывести название категорий без ссылок по инструкции. Но ссылку вывести никак не получается.

Еще получилось вывести название категории и ссылку по инструкции отсюда. Но таким методом, как я понял, можно вывести только на одну категорию, как в хлебных крошках.

Помогите, пожалуйста, сделать вывод ссылок на соответствующие категории.

Надіслати
Поділитися на інших сайтах


 

Проверил решение для Opencart 1.5. По описанию — именно то, что надо, но не работает на 2.2, к сожалению.

 

 

Чуть измените решение для 1.5
 
 $this->load->model('catalog/category');


          $data['catprod'] = array();
          
          $product_category = $this->model_catalog_product->getCategories($product_id);
          
          foreach ($product_category as $prodcat) {
 $category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
 if ($category_info) {
 $data['catprod'][] = array(
 'name'     => $category_info['name'],
 'href'     => $this->url->link('product/category', 'path=' . $category_info['category_id'])
 );
 }
          } 

всё работает! http://ocshop.xdomus.ru/index.php?route=product/product&path=24&product_id=40

  • +1 1
Надіслати
Поділитися на інших сайтах

Спасибо огромное!

 

Шикарно получилось:

581da8fba355d7fd7d6f3a275a91704f.jpg

 

=====

 

Продублирую решение, чтобы оно не затерялось.

 

1. В файле catalog/controller/product/product.php

 

После строки

$this->load->model('catalog/product');

Вставить

$this->load->model('catalog/category');


        $data['catprod'] = array();
          
        $product_category = $this->model_catalog_product->getCategories($product_id);
          
        foreach ($product_category as $prodcat) {
		$category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
		if ($category_info) {
		$data['catprod'][] = array(
		'name'     => $category_info['name'],
		'href'     => $this->url->link('product/category', 'path=' . $category_info['category_id'])
		);
		}
} 

2. Затем в шаблоне, например, в catalog/view/theme/*/template/product/product.tpl

 

Перед

<?php if ($manufacturer) { ?>

Или другом месте вставить

<span>Categories: </span><?php foreach ($catprod as $catp) { ?> <a href="<?php echo $catp['href']; ?>"><?php echo $catp['name']; ?></a> |<?php } ?><br />
Змінено користувачем deezler
  • +1 4
Надіслати
Поділитися на інших сайтах


<span>Categories: </span>

не кошерно))))

 

 

Так в оригинале было :) Тут главное категории вывести.

 

Я оформил так:

<div class="catslist"><?php foreach ($catprod as $catp) { ?><span><a href="<?php echo $catp['href']; ?>"><?php echo $catp['name']; ?></a></span> <?php } ?></div>

А в CSS запятые:

.catslist span:after {
    content: ",";
}
.catslist span:last-child:after {
content: "";
}
Змінено користувачем deezler
Надіслати
Поділитися на інших сайтах


<span>Categories: </span>

не кошерно))))

 

Да, надо из языковых вытащить...

А лучше вообще убрать и так понятно о чём речь :) 

там еще палочка | не кошерная...

Змінено користувачем Wadamir
Надіслати
Поділитися на інших сайтах

там еще палочка | не кошерная...

 

 

Наверное уместней вывести списком (через <ul>) или каждому выводимому разделу присвоить бутстраповский стиль "label" с подходящим цветом.

 

Недавно решал задачу как вывести категорию товара. Выгнал в "крошки" в итоге, полный путь. Но это одна категория (не считая родительских), а все категории даже интересней вывести, для внутренней перелинковки.

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Добрый вечер.

После вставки кодов вылетает ошибка на странице карточки товара (на месте где должно быть название категории):

Categories: Notice: Undefined variable: catprod in /home/users/l/limn/domains/777potolki99-os/catalog/view/theme/magazin/template/product/product.tpl on line 159Warning: Invalid argument supplied for foreach() in /home/users/l/limn/domains/777potolki99-os/catalog/view/theme/magazin/template/product/product.tpl on line 159

Помогите с решением этой проблемы. Версия ocStore 2.1.0.1

Судя по ошибке - не объявлена переменная. В файле catalog/controller/product/product.php  код добавил. Может код нужно как-то переделать?

Надіслати
Поділитися на інших сайтах


  • 7 months later...

Приветствую!

Вы бы не могли подсказать, как вывести в карточку товара главную категорию этого самого товара? В данном примере, отображается подкатегория.

 

Надіслати
Поділитися на інших сайтах


  • 4 months later...
  • 9 months later...
В 09.06.2016 в 01:01, Tom сказал:

<span>Categories: </span>

не кошерно))))

Добрый день! Автор темы был Новичок, поэтому не факт что мне ответит, поэтому обращаюсь к вам. Можете подсказать как в этом коде сделать так, чтобы выводились не ВСЕ категории, а только главная?

 

Вот сам код напомню:

 

$this->load->model('catalog/category');


        $data['catprod'] = array();
          
        $product_category = $this->model_catalog_product->getCategories($product_id);
          
        foreach ($product_category as $prodcat) {
		$category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
		if ($category_info) {
		$data['catprod'][] = array(
		'name'     => $category_info['name'],
		'href'     => $this->url->link('product/category', 'path=' . $category_info['category_id'])
		);
		}
Надіслати
Поділитися на інших сайтах


  • 1 year later...

Готовый ocmod для версии 2.3. Только вывод в tpl нужно поправить под ваш шаблон - я сделал под свой. Выводит в карточку товара список всех категорий, где есть товар.

add_product_card_all_used_categories.xml

  • +1 3
Надіслати
Поділитися на інших сайтах


В 07.05.2018 в 20:36, Denyelle сказал:

как в этом коде сделать так, чтобы выводились не ВСЕ категории, а только главная?

        $product_category = $this->model_catalog_product->getCategories($product_id);

        foreach ($product_category as $prodcat) {
            if($prodcat['main_category'] == 1){
                $category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
                $data['catprod_name'] = $category_info['name'];
                $data['catprod_href'] = $this->url->link('product/category', 'path=' . $category_info['category_id']);
                continue;
            }
        }

 

  • +1 1
Надіслати
Поділитися на інших сайтах

  • 2 months later...
2 минуты назад, Klaus сказал:

Но хотелось бы ещё на страницу категории вывести все категории в карточку товара, ну и в товарных модулях тоже.

и в чем проблема?  все аналогично

Надіслати
Поділитися на інших сайтах

  • 3 months later...
В 04.11.2019 в 18:53, Skull515 сказал:

Готовый ocmod для версии 2.3. Только вывод в tpl нужно поправить под ваш шаблон - я сделал под свой. Выводит в карточку товара список всех категорий, где есть товар.

add_product_card_all_used_categories.xml 2 \u043a\u0411 · 37 downloads

Подскажите, пожалуйста, как исключить главную категорию из вывода?

Надіслати
Поділитися на інших сайтах

8 минут назад, poetiq сказал:

Подскажите, пожалуйста, как исключить главную категорию из вывода?

добавить проверку на main_category

выше есть пример

  • +1 1
Надіслати
Поділитися на інших сайтах

  • 2 weeks later...
В 13.05.2020 в 19:06, fanatic сказал:

добавить проверку на main_category

выше есть пример

 

Спасибо за решение! А как можно прикрутить к категории еще и картинку ее?? 

Надіслати
Поділитися на інших сайтах


  • 5 weeks later...
  • 4 months later...
В 08.06.2016 в 21:00, deezler сказал:

Спасибо огромное!

 

Шикарно получилось:

581da8fba355d7fd7d6f3a275a91704f.jpg

 

=====

 

Продублирую решение, чтобы оно не затерялось.

 

1. В файле catalog/controller/product/product.php

 

После строки


$this->load->model('catalog/product');

Вставить


$this->load->model('catalog/category');


        $data['catprod'] = array();
          
        $product_category = $this->model_catalog_product->getCategories($product_id);
          
        foreach ($product_category as $prodcat) {
		$category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
		if ($category_info) {
		$data['catprod'][] = array(
		'name'     => $category_info['name'],
		'href'     => $this->url->link('product/category', 'path=' . $category_info['category_id'])
		);
		}
} 

2. Затем в шаблоне, например, в catalog/view/theme/*/template/product/product.tpl

 

Перед


<?php if ($manufacturer) { ?>

Или другом месте вставить


<span>Categories: </span><?php foreach ($catprod as $catp) { ?> <a href="<?php echo $catp['href']; ?>"><?php echo $catp['name']; ?></a> |<?php } ?><br />

На ocstore 2.3 эта схема не работает. Если кто знает подскажите пожалуйста, как  реализовать тоже самое на 2.3

Надіслати
Поділитися на інших сайтах


11 минут назад, marvel сказал:

На ocstore 2.3 эта схема не работает.

работает

может после изменений в файлах, забыли обновить модификаторы?

 

Надіслати
Поділитися на інших сайтах

  • 5 months later...
В 04.11.2019 в 15:53, Skull515 сказав:

Готовый ocmod для версии 2.3. Только вывод в tpl нужно поправить под ваш шаблон - я сделал под свой. Выводит в карточку товара список всех категорий, где есть товар.

add_product_card_all_used_categories.xml 2 \u041a\u0411 · 120 downloads

Сломал голову как отфильтровать вывод подкатегорий только с определенной категории.

Объясняю - товар может быть в нескольких категориях, но нужно выводить картинки подкатегорий только определенной как образцы тканей

Надіслати
Поділитися на інших сайтах

3 години назад, recon10263266 сказав:

Сломал голову как отфильтровать вывод подкатегорий только с определенной категории.

Объясняю - товар может быть в нескольких категориях, но нужно выводить картинки подкатегорий только определенной как образцы тканей

Разобрался сам в контроллер:

$catprod = array();
					$product_category = $this->model_catalog_product->getCategories($product_id);
					$product_category2 = $this->model_catalog_category->getCategories(170);			
					foreach ($product_category as $prodcat) {
					$category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
					 if($category_info) {
							$data['catprod'][] = array(
							'id'     => $category_info['category_id'],
								'image'     => $category_info['image'],
								'href'     => $this->url->link('product/category', 'path=' . $category_info['category_id'])
							);
						}
					}	
					foreach ($product_category2 as $prodcat2) {
					$category_info2 = $this->model_catalog_category->getCategory($prodcat2['category_id']);
					 if($category_info2) {
							$data['catprod2'][] = array(
							'id2'     => $category_info2['category_id'],
							);
						}
					}
<?php foreach ($catprod2 as $catp2) { ?>
						<?php foreach ($catprod as $catp) { ?>
						 <?php if ($catp['id'] == $catp2['id2']) {  ?>
						  <li>  <a href="<?php echo $catp['href']; ?>" rel="nofollow"><img src="image/<?php echo $catp['image']; ?>"  /></a></li>
						<?php } ?>	
						<?php } ?>
						<?php } ?>
Змінено користувачем recon10263266
Надіслати
Поділитися на інших сайтах

  • 4 months later...
В 08.06.2016 в 21:00, deezler сказал:

Спасибо огромное!

 

Шикарно получилось:

http://s8.hostingkartinok.com/uploads/images/2016/06/581da8fba355d7fd7d6f3a275a91704f.jpg

 

=====

 

Продублирую решение, чтобы оно не затерялось.

 

1. В файле catalog/controller/product/product.php

 

После строки


$this->load->model('catalog/product');

Вставить


$this->load->model('catalog/category');


        $data['catprod'] = array();
          
        $product_category = $this->model_catalog_product->getCategories($product_id);
          
        foreach ($product_category as $prodcat) {
		$category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
		if ($category_info) {
		$data['catprod'][] = array(
		'name'     => $category_info['name'],
		'href'     => $this->url->link('product/category', 'path=' . $category_info['category_id'])
		);
		}
} 

2. Затем в шаблоне, например, в catalog/view/theme/*/template/product/product.tpl

 

Перед


<?php if ($manufacturer) { ?>

Или другом месте вставить


<span>Categories: </span><?php foreach ($catprod as $catp) { ?> <a href="<?php echo $catp['href']; ?>"><?php echo $catp['name']; ?></a> |<?php } ?><br />

А если у товара не будет категории?  Получится не красиво ...

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.