Перейти к содержанию
  • В связи с блокировкой банка QIWI оплата через сайт не возможна.
    Для оплаты и получения дополнений просьба писать в личные сообщения
    Admin*у
    После оплаты Вам так же будет доступно скачивание дополнений и обновлений на данном форуме

Сортировка рекомендуемых товаров


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

Доработка сортировка рекомендованных товаров по категориям

В Opencart есть очень полезная функция рекомендованных товаров. Однако в стандартном исполнении очень не хватает сортировки по категориям. Согласитесь, что к ноутбуку могут быть множество аксессуаров, наушники, мышки, сумки и тому подобное. Рекомендованных товаров может быть большое количество, и если пользователю нужны только мышки, при стандартном исполнении, ему нужно все просматривать, что согласитесь неудобно. В данной доработке мы сделаем вывод рекомендованных товаров по категориям.

С помощью дополнительных скриптов, например скрывающегося и раскрывающегося блока div можно показать только названия категорий, а содержимое, то есть все товары скрыть и при нажатии нужной категории покупатель увидит все рекомендованные товары, которые ему интересные.

Для реализации задуманного нам надо будет изменить три файла и соответственно разделим все на три этапа.

1. Для начала добавим функцию выборки всех категорий в которых находится данный товар. Для этого открываем файл: /catalog/model/catalog/product.php

Находим строку:

public function getProductRelated($product_id) {

Перед ней вставляем:

public function getProductCategory($product_id) {
	$product_data = array();
	$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category p2c LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p2c.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
	foreach ($query->rows as $result) { 
		$product_data[$result['category_id']] = $this->model_catalog_category->getCategory($result['category_id']);
	}
	return $product_data;
}

Сохраняем, теперь у нас есть массив с id категорий товара.

2. Далее добавим необходимый функционал в контроллер, для этого открываем: /catalog/controller/product/product.php Находим строки:

$this->data['products'] = array();

После неё вставляем:

$this->data['categories'] = array(); $category_names = array();

Далее находим строку

$this->data['products'][] = array(

Перед ней вставляем:

$category_data = $this->model_catalog_product->getProductCategory($result['product_id']);
foreach($category_data as $id){
	$category_name = $id['name'];
	$category_category_id = $id['category_id'];
	$category_sort_order = $id['sort_order'];	
}	

Далее находим строку:

'name'    	 => $result['name'],

После нее вставляем:

'category_name'   => $category_name,
'category_id'  	  => $category_category_id,
'category_sort'   => $category_sort_order,	

Далее находим строку:

'href'    	 => $this->url->link('product/product', 'product_id=' . $result['product_id'])

После нее вставляем:

if(!in_array($category_name, $category_names)){
	$category_names[] = $category_name;
}
$this->data['products_cat'] = $category_names;		

Далее находим строку:

$this->data['tags'] = array();

Перед ней вставляем:

foreach ($this->data['products_cat'] as $name) {
	$products = array();
	foreach ($this->data['products'] as $result) {
		if($name == $result['category_name']){
			$products[] = array(
				'product_id' => $result['product_id'],
				'thumb'   	 => $result['thumb'],
				'name'    	 => $result['name'],
				'price'   	 => $result['price'],
				'special' 	 => $result['special'],
				'rating'     => $result['rating'],
				'reviews'    => $result['reviews'],
				'href'    	 => $result['href']
			);
		}
	}
	$this->data['categories'][] = array(
		'name'       => $name,
		'products'   => $products
	);
}	

Сохраняем, теперь у нас есть массив с категориями у которого есть массив с товарами этих категорий. Осталось дело за малым, отредактировать вывод рекомендованных товаров.

3. Для этого открываем файл шаблона: /catalog/view/theme/default/template/product/product.tpl Находим строку:

<?php if ($products) { ?>

Заменяем её на:

<?php if ($categories) { ?>

Далее находим строку:

<?php foreach ($products as $product) { ?>

Заменяем её на строки:

<?php foreach ($categories as $category) { ?>
   <h2><?php echo $category['name']; ?></h2>
      <?php foreach ($category['products'] as $product) { ?>

Далее находим строку:

<a class="button" onclick="addToCart('<?php echo $product['product_id']; ?>');"?><?php echo $button_cart; ?>

После неё добавляем:

<?php } ?>

Все готово! После внесения изменений все рекомендованные товары сортируются по категориям.

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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