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

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

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

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

Спасибо!

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


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

Нашел сам:

В файле:

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

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

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

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

$order = 'DESC';
  • +1 3

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


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

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

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


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

решение, которое не конфликтует с 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 1

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


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

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

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

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

спасибо.

а за вышесказанное спасибо.

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


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

Нашел сам:

В файле:

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 не выходит аленький цветочек =(

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


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

А для версии 1.5.3.1 этот метод работает?

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


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

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

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


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

решение, которое не конфликтует с 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)

 

работает, спасибо

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


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

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

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

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


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

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

 

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 6

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


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

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

 

 

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

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


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

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

Хм, у меня не рушится.

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


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

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

 

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. Не знаю насколько это решение правильное и красивое, но работает.

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

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


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

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

 

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. Не знаю насколько это решение правильное и красивое, но работает.

 

 

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

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


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

Большое спасибо - решение супер.

ocStore 1.5.5.1.1 - все работает...

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


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

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

 

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 работает суперово!

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


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

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

Изменено пользователем 1san4ik

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


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

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

 

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

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

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

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


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

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

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

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

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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От LionHunter
      Здравствуйте
       
      Возможно кто-то такое делал или знает как: необходимо, чтобы товары в категории сортировались (по умолчанию) в зависимости от количества продаж. То есть, товары, которых продано  больше всего за период существования магазина были вверху и далее по убыванию.
      Это вообще реально сделать? Если вдруг есть тема, где что-то подобное уже обсуждалось - буду благодарен за подсказку.  
    • От ArtMike
      Встал вопрос о модификации стандартной сортировки и возможности добавления в неё сортировки по подкатегориям. Зачем?  Есть же куча модулей - фильтров!
      Я думаю ни для кого не секрет что больше половина трафика практически на любой ресурс идет с мобильных устройств и собственно там их (эти все крутые фильтры просто некуда пихать). А вот стандартная сортировка смотрится компактно и вполне элегантно, работает привычно и функционально для юзера. 
      Вот только бы добавить туда возможность сортировки по подкатегориям. 
      В очередной раз удивлен, что никому это не понадобилось пока и решений я не нашел, ни в РУ сегменте, ни в ЕN сегменте,
      Может кто-то реализовывал подобное? Или готов за разумное вознаграждение помочь? 
       

    • От likesmartass
      300.00 руб
      Скачать/Купить дополнение


      Сортировка перетаскиванием Drag & Drop Sort (товары, категории, атрибуты, опции, производители, статьи)
      Сортировка товаров, категорий, производителей, атрибутов, групп атрибутов, опций, статей одной лишь мышкой! (OpenCart 2.3.x/OcStore 2.3.x)
       
       
      Demo url: http://oc23en.505559.ru/admin/index.php?route=catalog/product
      Demo login: demo
      Demo pass: demo
       
       
       
      Как работать с модулем:
       
      1) Для активации сортировки, необходимо нажать кнопку "Режим перетаскивания".
           
       
      2) (Необязательно!) Если у Вас в магазине много товаров с одинаковым значение сортировки, то нажмите кнопку "Упорядочить сортировку", для автоматической расстановки значений.
           
       
      3) Для сортировки, просто потяните за кнопку или измените числовое значение в поле "Сортировка".
          
       
       
      Автоматическая сортировка расставляет значения "через 1", это сделано для того, чтобы, в ручную можно было расставить номера сортировки легче (т.к. между соседними номерами "зазор").
       
      Гарантируется совместимость со стандартным OpenCart 2.3 и ocStore 2.3. Если у Вас установлены другие модули, мешающие данному модулю, то Вы всегда можете обратиться за адаптацией по почте ed.smartass@gmail.com. Если мешающий модуль/тема популярен (200+ покупок), то адаптация бесплатно!
       
       
      Модуль не заменяет никакие файлы.
      Для установки использовать стандартный установщик OpenCart.
       
      Установка:
      (Дополнения / Установка дополнений) Установите DragSort.*.ocmod.zip, (Дополнения / Менеджер дополнений) Нажмите кнопку обновить.  
      По всем вопросам, багам, замечаниям, предложениям обращаться:
      Почта: ed.smartass@gmail.com; skype: wari0z  
      Добавил likesmartass Добавлено 06.10.2018 Категория Модули Системные требования Сайт разработчика mailto:ed.smartass@gmail.ru Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop  
    • От likesmartass
      Сортировка товаров, категорий, производителей, атрибутов, групп атрибутов, опций, статей одной лишь мышкой! (OpenCart 2.3.x/OcStore 2.3.x)
       
       
      Demo url: http://oc23en.505559.ru/admin/index.php?route=catalog/product
      Demo login: demo
      Demo pass: demo
       
       
       
      Как работать с модулем:
       
      1) Для активации сортировки, необходимо нажать кнопку "Режим перетаскивания".
           
       
      2) (Необязательно!) Если у Вас в магазине много товаров с одинаковым значение сортировки, то нажмите кнопку "Упорядочить сортировку", для автоматической расстановки значений.
           
       
      3) Для сортировки, просто потяните за кнопку или измените числовое значение в поле "Сортировка".
          
       
       
      Автоматическая сортировка расставляет значения "через 1", это сделано для того, чтобы, в ручную можно было расставить номера сортировки легче (т.к. между соседними номерами "зазор").
       
      Гарантируется совместимость со стандартным OpenCart 2.3 и ocStore 2.3. Если у Вас установлены другие модули, мешающие данному модулю, то Вы всегда можете обратиться за адаптацией по почте ed.smartass@gmail.com. Если мешающий модуль/тема популярен (200+ покупок), то адаптация бесплатно!
       
       
      Модуль не заменяет никакие файлы.
      Для установки использовать стандартный установщик OpenCart.
       
      Установка:
      (Дополнения / Установка дополнений) Установите DragSort.*.ocmod.zip, (Дополнения / Менеджер дополнений) Нажмите кнопку обновить.  
      По всем вопросам, багам, замечаниям, предложениям обращаться:
      Почта: ed.smartass@gmail.com; skype: wari0z  
    • От oia15
      Здравствуйте! На OcStore 2.3. Нужно сделать, чтобы ранжирование товаров в категории по умолчанию было по одному из атрибутов товаров. И можно было бы менять только от меньшего к большему / большего к меньшему. Причем для разных категорий может быть разный атрибут, по которому нужно ранжировать. Соответствия category_id -- атрибут, по которому нужно ранжировать категорию можно просто задавать в файле на сервере без интерфейсных наворотов.   Если может кто-то помочь с реализацией задачи?  Сколько будет стоить доработка?   Может если кто модуль подходящий знает, я не нашел. Наверное проще доработкой.
  • Последние посетители   0 пользователей онлайн

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

×

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

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