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

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

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

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;	}

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

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

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


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

Спасибо, будем пробовать!!!!!!!!!!!!

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


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

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

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


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

Тоже ищу способ выводить товары на главной по id. Может есть дополнение которое это реализует?

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


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

в ..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 пользователей онлайн

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

×

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

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