Jump to content
Sign in to follow this  
andrus

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

Recommended Posts

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

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

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

Edited by andrus

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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, тоесть в зависимости от того, в какой категории находишся, в той и выводит "последние".

Share this post


Link to post
Share on other sites

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

Я там делал все по принципу создания страницы "Акции" (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' ). ?

 

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

Edited by andrus

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

Если в модели соотв., вместо 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-)  кароче то что надо ,что доктор прописал и на следующие варианты вывода последних, в каком хочешь виде. 

Edited by andrus

Share this post


Link to post
Share on other sites
В 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);

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

Share this post


Link to post
Share on other sites

Кэш модификаций сбрасывали?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.