COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

модуль Новинки, сортировка по product_id


juancarlovich

Recommended Posts

Уважаемые, помогите разобраться :)

Движок PRO Версия 2.1.0.1.8. Задача - в модуле Новинки выводить последние товары не по дате создания, а по product_id.

Изменил в файле catalog/controller/module/latest.php на:

 

		$filter_data = array(
			'sort'  => 'p.product_id',
			'order' => 'DESC',
			'start' => 0,
			'limit' => $setting['limit']
		);

 

вывод товаров изменился, но каким-то хаотичным способом... Теперь выводятся id: 48958, 48956, 48957, 51792 и тд. - в каком-то разнобое идут, вперемешку последние и совсем не последние.

Такая же ситуация и с модулем product_tab.php.

На прошлых версиях OpenCarta все работало замечательно, на 2 версию только вчера перешел...

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

12 часа назад, savage4pro сказал:

добавьте еще один ключ p.product_id в массив sort_data метода getProducts модели ModelCatalogProduct

 

огромное спасибо!

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

  • 1 year later...

Прошу еще раз помощи, теперь под версию PRO 2.3.0.2.2, такая же проблема как и в первом посте :(

 

Что сделано:

1. catalog/model/catalog/product.php - добавил ключ p.roduct_id

Скрытый текст

public function getProducts($data = array()) {
 ...

		$sort_data = array(
			'p.product_id',
			'pd.name',
			'p.model',
			'p.quantity',
			'p.price',
			'rating',
			'p.sort_order',
			'p.date_added'
		);

 

и заменил сортировку в запросе getLatestProducts

Скрытый текст

public function getLatestProducts($limit) {
		$product_data = $this->cache->get('product.latest.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $this->config->get('config_customer_group_id') . '.' . (int)$limit);

		if (!$product_data) {
			$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 <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.product_id DESC LIMIT " . (int)$limit);

 

2. catalog/controller/extension/module/latest.php - заменил на сортировку по p.product_id

Скрытый текст

$filter_data = array(
			'sort'  => 'p.product_id',
			'order' => 'DESC',
			'start' => 0,
			'limit' => $setting['limit']
		);

 

 

В итоге фигня какая-то, опять выводится в рандомном порядке...

 

UPD: в общем-то оказалось все легко, но для не очевидно :) нужно модификаторы обновлять после изменения кода.

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

  • 2 years later...
В 23.03.2017 at 20:56, juancarlovich сказал:

Прошу еще раз помощи, теперь под версию PRO 2.3.0.2.2, такая же проблема как и в первом посте :(

 

Что сделано:

1. catalog/model/catalog/product.php - добавил ключ p.roduct_id

  Показать содержимое


public function getProducts($data = array()) {
 ...

		$sort_data = array(
			'p.product_id',
			'pd.name',
			'p.model',
			'p.quantity',
			'p.price',
			'rating',
			'p.sort_order',
			'p.date_added'
		);

 

и заменил сортировку в запросе getLatestProducts

  Показать содержимое


public function getLatestProducts($limit) {
		$product_data = $this->cache->get('product.latest.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $this->config->get('config_customer_group_id') . '.' . (int)$limit);

		if (!$product_data) {
			$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 <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.product_id DESC LIMIT " . (int)$limit);

 

2. catalog/controller/extension/module/latest.php - заменил на сортировку по p.product_id

  Скрыть содержимое


$filter_data = array(
			'sort'  => 'p.product_id',
			'order' => 'DESC',
			'start' => 0,
			'limit' => $setting['limit']
		);

 

 

В итоге фигня какая-то, опять выводится в рандомном порядке...

 

UPD: в общем-то оказалось все легко, но для не очевидно :) нужно модификаторы обновлять после изменения кода.

Делал также - не работает...может ещё какие файлы на эту сортировку product/latest ?

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

Да, после всех манипуляций и модификаторы чищу и кеш шаблона чищу

 

наверное, мы о разных вещах говорим. Меня интересует вывод товаров на этой странице:

мой_сайт/index.php?route=product/latest

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

Join the conversation

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  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.