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

[Поддержка] Товара которого нет в наличии в конце списка OC2


protein

Recommended Posts

Товара которого нет в наличии в конце списка OC2

Завантажити / Придбати розширення

Данный модуль отображает товары которых нет в наличии (количество которых равно нулю) в конце списка.

Основан на этом способе от Neurotechnic

Проверено на версии Opencart-2.0.3.1

Проверено на версии Opencart-2.1.0.1

Если будете ставить на другую версию - то отпишитесь мне о работоспособности модуля !

Модуль не изменяет системных файлов и в случае-чего его легко удалить без последствий.

Как установить:

1 Скачать архив

2 Распаковать скаченный архив. (там будет 2 файла)

3 Открыть файл Инструкция.txt и прочитать как установить (удалить) модуль.

Это мой первый модуль пользуйтесь на свой страх и риск

Перед установкой желательно сделать бекап файлов!


 

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

   <operation>
        <search><![CDATA[} elseif ($data['sort'] == 'p.price') {]]></search>
        <add position="replace"><![CDATA[} elseif ($data['sort'] == 'p.price') {]]></add>
    </operation>
:-D

 

измеряли разницу во времени исполнения запроса при двойной сортировке?

Перед установкой желательно сделать бекап файлов!

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

Скорость не измерял. Подскажите где проверить - проверю.

Бекап делать что-бы снять с меня любую ответственность. 

Если у Вас есть варианты как сделать подобное решение более рационально я буду только рад.

P/s Я не программист код плохо понимаю, в описании написал откуда было "содрано" данное решение.

Спасибо за критику :rolleyes: .

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

Ответ прав, тут крайне тяжелая сортировка получается, и индекс на поле quantity не спасет, так как сортируется результат подзапроса.

Правильным решением такой ситуации является запрос

UPDATE oc_product SET sort_order = '100' WHERE quantity = 0;
UPDATE oc_product SET sort_order = '0' WHERE quantity >= 0 AND quantity = 100;

Я надеюсь понятно зачем сделан второй UPDATE и почему в составном условии мы проверяем количество равно 100 ?

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

Выше писал, что я зелёный совсем, и в коде не понимаю...

... только на уровне "найти xxx в файле и заменить на zzz"

 

 

Вобщем буду удалять...

Кто подскажит как это сделать?

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

  • 1 month later...

 

Правильным решением такой ситуации является запрос

UPDATE oc_product SET sort_order = '100' WHERE quantity = 0;
UPDATE oc_product SET sort_order = '0' WHERE quantity >= 0 AND quantity = 100;

правильно ли я понимаю, что такими запросами через phpmyadmin я самостоятельно могу отсортировать все в низ единажды?

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


  • 1 month later...
  • 2 weeks later...
Вот вам универсальное решение:

 

Если товар не в наличии - к сортировке добавится 1000

вернулся в наличие - отнимет 1000 у сортировки

тем самым ручную сортировку мы не теряем.

единственное ограничение - ручную сортировку товаров держать в диапазоне от 0 до 1000.

 

$this->db->query("UPDATE " . DB_PREFIX . "product SET sort_order = sort_order + 1000 WHERE quantity < 1 AND sort_order < 1000");

$this->db->query("UPDATE " . DB_PREFIX . "product SET sort_order = sort_order - 1000 WHERE quantity >= 1 AND sort_order >= 1000");

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

Эти два запроса - можно поместить в два места -

1. Где происходит Списание со склада

2. Где происходит Возврат на склад
Надіслати
Поділитися на інших сайтах

  • 5 months later...

 

Вот вам универсальное решение:
 
Если товар не в наличии - к сортировке добавится 1000
вернулся в наличие - отнимет 1000 у сортировки
тем самым ручную сортировку мы не теряем.
единственное ограничение - ручную сортировку товаров держать в диапазоне от 0 до 1000.
 
$this->db->query("UPDATE " . DB_PREFIX . "product SET sort_order = sort_order + 1000 WHERE quantity < 1 AND sort_order < 1000");
$this->db->query("UPDATE " . DB_PREFIX . "product SET sort_order = sort_order - 1000 WHERE quantity >= 1 AND sort_order >= 1000");

 

в каком файле это вставить ?)

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


  • 4 months later...

Установил себе такую сортировку на ocStore 2.1.0.2.1 - все отлично работает. Однако у меня немного переделан движок и для некоторых для товаров можно поставить кол-во = 0 и статус отсутсвия на складе - Предзаказ или Ожидается или Требует уточнения. Тогда в карточке товара меняется кнопка с "Купить" на "Предзаказ" и т.д. Но данный модуль сортирует такие товары так же в конец списка. Если кто знает, подскажите, как сделать такую сортировку не только по количеству на складе, но и по статусу отсутствия. Где и как можно поставить условие для stock_status_id?

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


  • 4 months later...
  • 1 month later...
  • 4 weeks later...
  • 2 months later...
  • 4 months later...

У меня не работает. Подскажите какие правки внести для отображения товаров с 0 остатком внизу, но чтоб не переставали работать ручная сортировка и другие) Спасибо!

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


  • 1 month later...
  • 2 weeks later...
  • 1 month later...
  • 4 months later...
  • 1 month later...
В 08.11.2015 в 10:16, snastik сказал:

Протупил спросонья

 

UPDATE oc_product SET sort_order = '0' WHERE quantity >= 0 AND sort_order = 100;

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

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


  • 11 months later...

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

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

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

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

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

Вхід

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

Вхід зараз

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

Important Information

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