Перейти к содержанию
View in the app

A better way to browse. Learn more.

Русскоязычное сообщество Opencart

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

В связи с блокировкой банка QIWI оплата через сайт не возможна.
Для оплаты и получения дополнений просьба писать в личные сообщения 
Admin*у
или в Телеграмм https://t.me/pascha_opencart
После оплаты Вам так же будет доступно скачивание дополнений и обновлений на данном форуме

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

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

Опубликовано

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

В 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 } ?>

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

Последние посетители 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.