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

Вывод определенных товаров на Главной странице


panasys

Recommended Posts

OpenCart по-умолчанию на главной странице выводит список последних добавленных товаров, а можно ли организать вывод товаров с определенным ID например product&product_id=54, product&product_id=50,product&product_id=38 и.т.д ???????

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


можно попробовать следующим образом:

открываем файл catalog/controller/common/home.php

ищем

foreach ($this->model_catalog_product->getLatestProducts(8) as $result) {
меняем на

foreach ($this->model_catalog_product->getLatestProducts(8, array(54, 50, 38)) as $result) {

открываем файл catalog/model/catalog/product.php

ищем функцию

public function getLatestProducts($limit) {		$product_data = $this->cache->get('product.latest.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $limit);		if (!$product_data) { 			$query = $this->db->query("SELECT *, 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 p.status = '1' AND p.date_available <= NOW() AND 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') . "' ORDER BY p.date_added DESC LIMIT " . (int)$limit);		 	 			$product_data = $query->rows;			$this->cache->set('product.latest.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $limit, $product_data);		}				return $product_data;	}
меняем ее на

public function getLatestProducts($limit, $prod_id='') {		$product_data = $this->cache->get('product.latest.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $limit);		if (!$product_data) {                    if ($prod_id) {                        foreach ($prod_id as $ids) {                            $and = " AND p.product_id = '" . (int)$ids . "' ";                        }                    } else {                        $and = "";                    }			$query = $this->db->query("SELECT *, 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 p.status = '1' " . $and . " AND p.date_available <= NOW() AND 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') . "' ORDER BY p.date_added DESC LIMIT " . (int)$limit);		 	 			$product_data = $query->rows;			$this->cache->set('product.latest.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $limit, $product_data);		}				return $product_data;	}

Сохраняем, пробуем...

З.Ы. не проверял на работоспособность...

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


  • 3 weeks later...

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

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


в ..wwwcatalogmodelcatalogproduct.php вставить:

public function getProductsArr($arr) {		$query = $this->db->query("SELECT *, pd.name AS name, p.image AS image, 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 . "stock_status ss ON (p.stock_status_id = ss.stock_status_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p.product_id IN (" . $arr . ") ORDER BY p.product_id ASC");				return $query->rows;	}

в ..wwwcatalogcontrollercommonhome.php

заменить

foreach ($this->model_catalog_product->getLatestProducts(8) as $result) {
на

foreach ($this->model_catalog_product->getProductsArr('43, 46, 41, 44') as $result) {

соответственно вписываем нужные ид

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


Ну не дождался я чуток :) Нашел для себя удобный способ - открываю базу и ставлю дату сегодняшнюю на те товары, которые хочу видеть на главной.. по энергозатратам ничуть не дольше чем поменять ид в файле и залить по фтп...

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


открываю базу и ставлю дату сегодняшнюю на те товары, которые хочу видеть на главной

Блин, все гениальное просто ) Действительно, по энергозатратам проще ) Респект!
Надіслати
Поділитися на інших сайтах


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

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

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

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

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

Вхід

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

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

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

Important Information

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