Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


deezler
 Погделиться

Рекомендованные сообещёния

Привет. Хочу вывести все категории товара на страниэто этого товара. Не нашел полного решения под 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 3
Ссылка на комменирий
Погделиться на других сайих


<span>Categories: </span>

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

Ссылка на комменирий
Погделиться на других сайих

<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 месяц спустя...

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

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

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 месяэтов спустя...

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

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

 

Ссылка на комменирий
Погделиться на других сайих


  • 4 месяца спустя...
  • 9 месяэтов спустя...
В 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 год спустя...

Готовый 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 месяца спустя...

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

Ссылка на комменирий
Погделиться на других сайих


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

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

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

Ссылка на комменирий
Погделиться на других сайих

  • 3 месяца спустя...
В 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 негдели спустя...
В 13.05.2020 в 19:06, fanatic сказал:

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

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

 

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

Ссылка на комменирий
Погделиться на других сайих


  • 5 негдель спустя...

не получается вывести название категории второго уровня

Ссылка на комменирий
Погделиться на других сайих


  • 4 месяца спустя...
В 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 месяэтов спустя...
В 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 месяца спустя...
В 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 />

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

Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.