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

Хак Auto Related для ocStore v0.2.2


costas

Recommended Posts

На основе этой темы https://opencartforum.com/topic/4886-модуль-auto-related-для-opencart-v151/page__pid__32845

Данный хак позволяет отображать случайную последовательность товаров во вкладке "Рекомендуем"

Товары выбираются из списка товаров родительской категории товара (main_category_id).

в файле catalog/model/catalog/product.php

после метода

	public function getProductRelated($product_id) {
                ...
		return $product_data;
	}
добавить

public function getProductRelatedByCategoryID($main_category_id, $limit = 4) {
                $offset_query = $this->db->query("SELECT FLOOR(RAND() * ( COUNT(p.product_id) - " . (int)$limit . " ) ) AS `offset` FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "stock_status ss ON (p.stock_status_id = ss.stock_status_id) WHERE  pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.date_available <= NOW() AND p.status = '1' AND p.main_category_id = " . (int)$main_category_id);
                $offset = ($offset_query->row['offset'] < 0) ? 0 : $offset_query->row['offset'];
		$sql = "SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, ss.name AS stock, (SELECT AVG(r.rating) FROM " . DB_PREFIX . "review r WHERE p.product_id = r.product_id GROUP BY r.product_id) AS rating FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "stock_status ss ON (p.stock_status_id = ss.stock_status_id) WHERE  pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.date_available <= NOW() AND p.status = '1' AND p.main_category_id = " . (int)$main_category_id ." LIMIT " . $offset . ", ".(int)$limit;
		$query = $this->db->query($sql);
                return $query->rows;
	}

в файле catalog/controller/product/product.php

найти срочку (и закомментировать)

$results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']);

заменить на (или добавить после, если закомментировали строчку выше)

$results = $this->model_catalog_product->getProductRelatedByCategoryID( $product_info['main_category_id'], 4);

где 4 будет количество товаров во вкладке "Рекомендуем" (можно изменить на желаемое)

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

У меня почему-то не работает. В рекомендуемые не добавляет товар, но и ошибок нет.

У вас в товарах отмечена main_category?
Надіслати
Поділитися на інших сайтах

Это в Связи - Категория ? Выбираю Показывать в категориях: Категория 1, пункт "Категория" Выбираю Категория 1 и ничего.

Одна единица товара? Каталог весь на каждый товар должна быть main_category_id прописана, понятно что на одной единице товара работать не будет... вроде очевидно.
Надіслати
Поділитися на інших сайтах

  • 1 year later...

в opencart 1.5.3.1 не рабоате выдает ошибку:

Notice: Undefined index: main_category_id in /home/site/public_html/catalog/controller/product/product.php on line 326Notice: Error: Unknown column 'p.main_category_id' in 'where clause'
Error No: 1054
SELECT FLOOR(RAND() * ( COUNT(p.product_id) - 6 ) ) AS `offset` FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN stock_status ss ON (p.stock_status_id = ss.stock_status_id) WHERE pd.language_id = '2' AND p2s.store_id = '0' AND ss.language_id = '2' AND p.date_available <= NOW() AND p.status = '1' AND p.main_category_id = 0 in /home/site/public_html/system/database/mysql.php on line 49
Надіслати
Поділитися на інших сайтах

  • 1 month later...

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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

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

Important Information

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