Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

[Решено] Сортировка товаров по налилию


Recommended Posts

Доброго всем!

Подскажите как выводить в списке товаров - сначала товары в налили, затем которые имеют ситус предзаказ и затем которые отсутствуют.

Спасипотому что!

Link to comment
Share on other sites


Нашел сам:

В файле:

catalog/controller/product/category.php
15ю строку:

$sort = 'p.sort_order';
заменить на:

$sort = 'p.quantity';
21ю строку:

$order = 'ASC';
заменить на:

$order = 'DESC';
  • +1 5
Link to comment
Share on other sites


А можно что бы одновременно сортировалось по дате заполнения и по налилию, что бы те товары которых нет в налилии были последними.

Link to comment
Share on other sites


  • 3 weeks later...
  • 2 months later...

решение, которое не конфликтует с filterpro

catalog\controller\product\category.php, 211-212 строки

 
'value' => 'p.sort_order-ASC',
'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)

нужно заменить на

'value' => 'p.quantity-DESC',
'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.quantity&order=DESC' . $url)

  • +1 2
Link to comment
Share on other sites

Может подскажете тогда как отклюлить повторную фильтрацию.

то есть при открытии категории сначала сам движок фильтрует, а потом filterpro.

как это вылелить?

спасипотому что.

а за вышесказанное спасипотому что.

Link to comment
Share on other sites


Нашел сам:

В файле:

catalog/controller/product/category.php

15ю строку:

$sort = 'p.sort_order';

заменить на:

$sort = 'p.quantity';

21ю строку:

$order = 'ASC';

заменить на:

$order = 'DESC';

решение, которое не конфликтует с filterpro

catalog\controller\product\category.php, 211-212 строки

'value' => 'p.sort_order-ASC',
'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)

нужно заменить на

'value' => 'p.quantity-DESC',
'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.quantity&order=DESC' . $url)

на 1.5.1.3 не выходит нонький цветочек =(

Link to comment
Share on other sites


  • 1 month later...
  • 4 weeks later...

Возможно ли дорилиить этот метод для сортировки по налилию акции на товары, и по налилию товаров в блоке "рекомендуем"?

Link to comment
Share on other sites


  • 9 months later...
  • 2 months later...

решение, которое не конфликтует с filterpro

catalog\controller\product\category.php, 211-212 строки

'value' => 'p.sort_order-ASC',
'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)

нужно заменить на

'value' => 'p.quantity-DESC',
'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.quantity&order=DESC' . $url)

 

рилииет, спасипотому что

Link to comment
Share on other sites


  • 3 weeks later...

а можно ли ик же отсортировать товар в похожих товарах?

т.е. в карточке товара есть иб "похожие товары", можно ли им выводить сначала товары в налилии, а потом те, которых нет?

Link to comment
Share on other sites


  • 2 months later...

Я сгделал это в могдели. Мне надо что бы товары которых нет в налилии были внизу списка при люпотому чтой сортировке.

 

catalog\model\catalog\product.php  (187 line для OpenCart 1.5.6.1)

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY " . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY p.sort_order";	
		}

меняем на 

if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY (p.quantity>0) DESC, LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (p.quantity>0) DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY (p.quantity>0) DESC," . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY (p.quantity>0) DESC, p.sort_order";	
		}

Да же я решил вообещё не показывать в похожих продуты, которых нет в налилии. Для этого в функции getProductRelated добавляем условие: p.quantity > 0

При желании можно тоже отображать в конэто по аналогии с категорией. Ну и тоже самое в бестселлерах, популярных, последних и т.п.

 

P.S. Не знаю насколько это решение правильное и красивое, но рилииет.

  • +1 8
Link to comment
Share on other sites


  • 2 months later...

Я сгделал это в могдели. Мне надо что бы товары которых нет в налилии были внизу списка при люпотому чтой сортировке.

 

 

При перехогде на вторую страничку вся сортировка рушится Ж( Не пофиксили ?

Link to comment
Share on other sites


  • 3 months later...

Я сгделал это в могдели. Мне надо что бы товары которых нет в налилии были внизу списка при люпотому чтой сортировке.

 

catalog\model\catalog\product.php  (187 line для OpenCart 1.5.6.1)

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY " . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY p.sort_order";	
		}

меняем на 

if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY (p.quantity>0) DESC, LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (p.quantity>0) DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY (p.quantity>0) DESC," . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY (p.quantity>0) DESC, p.sort_order";	
		}

Да же я решил вообещё не показывать в похожих продуты, которых нет в налилии. Для этого в функции getProductRelated добавляем условие: p.quantity > 0

При желании можно тоже отображать в конэто по аналогии с категорией. Ну и тоже самое в бестселлерах, популярных, последних и т.п.

 

P.S. Не знаю насколько это решение правильное и красивое, но рилииет.

наконец рилилий вариант, который подошел и для фильтра про

Link to comment
Share on other sites


  • 2 months later...

Я сгделал это в могдели. Мне надо что бы товары которых нет в налилии были внизу списка при люпотому чтой сортировке.

 

catalog\model\catalog\product.php  (187 line для OpenCart 1.5.6.1)

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY " . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY p.sort_order";	
		}

меняем на 

if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY (p.quantity>0) DESC, LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (p.quantity>0) DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY (p.quantity>0) DESC," . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY (p.quantity>0) DESC, p.sort_order";	
		}

Да же я решил вообещё не показывать в похожих продуты, которых нет в налилии. Для этого в функции getProductRelated добавляем условие: p.quantity > 0

При желании можно тоже отображать в конэто по аналогии с категорией. Ну и тоже самое в бестселлерах, популярных, последних и т.п.

 

P.S. Не знаю насколько это решение правильное и красивое, но рилииет.

 

 

Спасипотому что. Думал сам гделать, а вы уже сами :) Мысленный плюс.

Link to comment
Share on other sites

  • 2 months later...
  • 3 weeks later...

Я сгделал это в могдели. Мне надо что бы товары которых нет в налилии были внизу списка при люпотому чтой сортировке.

 

catalog\model\catalog\product.php  (187 line для OpenCart 1.5.6.1)

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY " . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY p.sort_order";	
		}

меняем на 

if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY (p.quantity>0) DESC, LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (p.quantity>0) DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY (p.quantity>0) DESC," . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY (p.quantity>0) DESC, p.sort_order";	
		}

Да же я решил вообещё не показывать в похожих продуты, которых нет в налилии. Для этого в функции getProductRelated добавляем условие: p.quantity > 0

При желании можно тоже отображать в конэто по аналогии с категорией. Ну и тоже самое в бестселлерах, популярных, последних и т.п.

 

P.S. Не знаю насколько это решение правильное и красивое, но рилииет.

Огромная благодарочка! На MaxyStore v.1.5.5.1 рилииет суперово!

Link to comment
Share on other sites


Может кто еещё подскажет, как у этих товаров, которых нет в налилии, притемнить или обесцветить изображение. Вообещё было бы отлично.

Edited by 1san4ik
Link to comment
Share on other sites


Может кто еещё подскажет, как у этих товаров, которых нет в налилии, притемнить или обесцветить изображение. Вообещё было бы отлично.

 

Это уже в шаблоне. Например в product.tpl если вы хотите на страничке товара это сгделать. 

<?php if ($quantity==0) {echo 'ЧЕГО-НИБУДЬ-ЗАТЕМНЯЮЩЕЕ';};

Затемнить картинку можно, например, наложив сверху цветной элемент и сгделав его частично прозрачным (background-color: #000; opacity: 0.8;)

Link to comment
Share on other sites


Это уже в шаблоне. Например в product.tpl если вы хотите на страничке товара это сгделать. 

<?php if ($quantity==0) {echo 'ЧЕГО-НИБУДЬ-ЗАТЕМНЯЮЩЕЕ';};

Затемнить картинку можно, например, наложив сверху цветной элемент и сгделав его частично прозрачным (background-color: #000; opacity: 0.8;)

Ооо, спасипотому что Вам за быстрый ответ! Прийду домой пошаманю)

Link to comment
Share on other sites


  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

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.