Перейти к содержанию
kpaqpa

Вывод категории товара под фото на странице категорий

Рекомендуемые сообщения

Приветствую! Хочется в категориях возле фото вывести категорию с ссылкой, может кто подскажет в какую сторону копать... версия opencart 2.0

 

Единственное что сделал так это вывод категории, и то это просто с хлебных крошек берет, заходишь в родительскую категорию показывает ту категорию..

\catalog\controller\product\category.php:

$data['products'][] = array(
				'thumb_swap'  => $swapimage,
				'hit'         => $hit,					
				'viewed'      => $result['viewed'],
				'date_end'    => $date_end,
				'date_available' => $result['date_available'],
				'options'     => $options,
				'quantity' => $result['quantity'],
				'stock' => ($result['quantity']<=0) ? $result['stock_status'] : $this->language->get('text_instock'),
				'sale' => $result['price'] == 0 ? 100 : round((($result['price'] - $result['special'])/$result['price'])*100, 0),
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
					'name'        => $result['name'],
					'catname'    => $category_info['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,
					'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
					'rating'      => $result['rating'],
					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
				);

ну и вывел в категориях \template\product\category.tpl

<?php echo $product['catname']; ?>

 

Категория к товарам проставлена только одна, максимальный уровень вложения 3й (1==>2==>3)

Screenshot_2.png

Поделиться сообщением


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

в идеале - написать функцию в модель товара catalog/model/catalog/product.php

что-то типа

public function getMainCategory($product_id) {
		$query = $this->db->query("SELECT ptc.category_id as category_id, cd.name as category_name FROM " . DB_PREFIX . "product_to_category ptc LEFT JOIN " . DB_PREFIX . "category_description cd ON (ptc.category_id = cd.category_id) WHERE ptc.product_id = '" . (int)$product_id . "' AND ptc.main_category=1");

		if ($query->num_rows) {
			$category = array(
			'category_name'=>$query->row['category_name'],
			'category_id'=>$query->row['category_id'],
			);
			return $category;
		}else{
			return false;
		}
	}

потом перед вашим

$data['products'][] = array(

добавить что-то вроде 

$main_category = $this->model_catalog_product->getMainCategory($result['product_id']);

Теперь у вас имеются

$main_category['category_id']  // id главной категории товара. можно использовать для генерации ссылки на неё
$main_category['category_name']  // название главной категории товара

//прежде чем их использовать не забывайте проверять 

if($main_category){
//значит главная категория товару задана и инфа о категории имеется
//дальше код для её обработки
}

 

  • +1 1

Поделиться сообщением


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

Взяла за основу пример с этой темы для вывода  main_category в карточке товара.

Успешно сделала вывод названия категории. Теперь застряла с другим вопросом, как в код ниже добавить еще возможность самой ссылки на эту категорию, что то мои знания закончились, помогите плиз....

Как было сделано вывод названия категории:

1.Файл модели продукта:

Перед:

public function getProductSpecials($data = array()) {

Вставила:

// Вывод главной категории старт
	public function getMainCategory($product_id) {
          $query = $this->db->query("SELECT ptc.category_id as category_id, cd.name as category_name FROM " . DB_PREFIX . "product_to_category ptc LEFT JOIN " . DB_PREFIX . "category_description cd ON (ptc.category_id = cd.category_id) WHERE ptc.product_id = '" . (int)$product_id . "' AND ptc.main_category=1");
		       		if ($query->num_rows) {
			$category_v_cartochke = array(
                'category_name'          => $query->row['category_name'],
				'category_id'           => $query->row['category_id']
			);
			return $query->row['category_name'];
		} else {
			return false;
		}
		  }	
// Вывод главной категории стоп

2. Файл контролера:

после:

$this->data['points'] = $product_info['points'];

добавила:

			// Вывод главной категории старт
			$this->data['category_v_cartochke'] = $this->model_catalog_product->getMainCategory($this->request->get['product_id']);
			// Вывод главной категории стоп	

.3 Ну и в сам шаблон вывела:

<p><?php echo $category_v_cartochke; ?></p>	

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

Пока cделала ссылку по еврейски :) Но хотелось бы сделать ее правильно.

<?php
$real_url = $_SERVER['REQUEST_URI'];     //получаем адрес текущей страницы
$cut_url = rtrim( dirname( $real_url ), "/" )."/";  //отрезаем текущий товар и получаем адрес директории
?>
<a href="<?php echo $cut_url; ?>"><?php echo $category_v_cartochke; ?></a>

 

 

Изменено пользователем natalia8978

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 04.05.2018 в 20:43, natalia8978 сказал:

а вот как теперь ссылку вывести дилема

		$main_category = $this->model_catalog_product->getMainCategory($this->request->get['product_id']);
		$this->data['name_category'] = $main_category['category_name'];
		$this->data['href_category'] = $this->url->link('product/category', 'path=' . $main_category['category_id']);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 06.05.2018 в 12:25, fanatic сказал:

		$main_category = $this->model_catalog_product->getMainCategory($this->request->get['product_id']);
		$this->data['name_category'] = $main_category['category_name'];
		$this->data['href_category'] = $this->url->link('product/category', 'path=' . $main_category['category_id']);

 

К сожалению целый день крутила ваш код, но так и ни чего не получилось, толи что то не туда вставляю, толи что то с кодом не то.... :)

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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