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

Вывод товаров в модуле Latest, из определённых категорий.


Recommended Posts

Доброго времени!

Реализовал на сайте вывод последних поступлений - на отдельную страницу. Но тянет туда этот модуль latest всё вподряд, что добавлялось недавно. Не могу добиться ,чтобы он из определённых категорий выводил товары, или вообще только определённо  из одной  категории.

Что правильного надо подправить/добавить в этом latest.tpl и latest.php ?

Змінено користувачем andrus
Надіслати
Поділитися на інших сайтах


1. Найти в файле catalog\model\catalog\product.php  функцию: public function getLatestProducts

2. В ней найти сам запарос:

$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.date_added DESC LIMIT " . (int)$limit);

3. Поменять код на:

$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2c.category_id = '47' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.date_added DESC LIMIT " . (int)$limit);

где p2c.category = '47' - id категории на выбор (в данном случае - 47)

 

P.S. Можно сделать по передаче 2-го аргумента при вызове функции, в зависимости от category_id, тоесть в зависимости от того, в какой категории находишся, в той и выводит "последние".

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

правильным решением будет написать для него свою модель, а не использовать готовые варианты

Я там делал все по принципу создания страницы "Акции" (special). Или же другим путём :/

Есть отдельная директория "latest" в controller/ и template/. Ну вот к примеру в controller лежит latest.php с таким кодом:

 

<?php  
class ControllerLatestLatest extends Controller {
	public function index() {
		$this->document->setTitle($this->data['title'] = "Здесь тайтл страницы");
		$this->document->setDescription($this->data['description'] = "Здесь дискрипшн свой ");
		$this->data['heading_title'] = $this->config->get('config_title');
	
		
		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/latest/latest.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/latest/latest.tpl';
			$this->data['template'] = $this->config->get('config_template');
		} else {
			$this->template = 'default/template/latest/latest.tpl';
		}

		$this->children = array(
			'common/column_left',
			'common/column_right',
			'common/content_top',
			'common/content_bottom',
			'common/footer',
			'common/header'
		);							
		$this->response->setOutput($this->render());
	}
}
?>

А как делать через model - я фиг его знает :/

 

 

 

Baco, благодарю за наводку, так как не высмотрел за сегодня, где же поменять вручную этот "category_id" =)

Так действительно работает. Но получается, что это значение переменной навсегда останется таким в этом product.php. И если вывести на новой странице новые поступления из второй/другой категории, то... получим снова товары из указанной вручную (category_id = '47' ). ?

 

Мудрённая просто затея там у меня: вывести надо  последние товары для двух главных категорий товаров- но каждый вывод делается на отдельной странице (новой созданной вообще, не находится в "категории" или "производителе").

Змінено користувачем andrus
Надіслати
Поділитися на інших сайтах


Если в модели соотв., вместо AND p2c.category_id = '47' вписать AND p2c.category_id IN ('47','52') то можно вполне без проблем получить последние с 2-х категорий, главное правильно передать аргумент и обработать "выхлоп".

 

Поменять вручную ... вопрос конечно интересный, либо в запросе самом менять, если нужно последние с 2-х категорий стабильно, либо выставить "config", но это уже другая песня и тут без бутылки пива - не разобраться  :wink:

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

Если в модели соотв., вместо AND p2c.category_id = '47' вписать AND p2c.category_id IN ('47','52') то можно вполне без проблем получить последние с 2-х категорий, главное правильно передать аргумент и обработать "выхлоп".

 

Поменять вручную ... вопрос конечно интересный, либо в запросе самом менять, если нужно последние с 2-х категорий стабильно, либо выставить "config", но это уже другая песня и тут без бутылки пива - не разобраться  :wink:

Окей, благодарю за ответ. Пока что не разобрался. Но нагуглил следующее... Смотрю тут вообще попахивает функционалом модуля https://opencartforum.com/files/file/432-jv-products-in-module-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%B8%D0%B7-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8-%D0%B2-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C/

8-)  кароче то что надо ,что доктор прописал и на следующие варианты вывода последних, в каком хочешь виде. 

Змінено користувачем andrus
Надіслати
Поділитися на інших сайтах


  • 1 year later...
В 03.08.2015 в 18:50, Baco сказал:

1. Найти в файле catalog\model\catalog\product.php  функцию: public function getLatestProducts

2. В ней найти сам запарос:


$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.date_added DESC LIMIT " . (int)$limit);

3. Поменять код на:


$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2c.category_id = '47' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.date_added DESC LIMIT " . (int)$limit);

где p2c.category = '47' - id категории на выбор (в данном случае - 47)

 

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

Вот сам код:

$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2c.category_id = '3' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.date_added DESC LIMIT " . (int)$limit);

Что нет так ? Ещё где-то изменения необходимо вносить ?

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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