Часто на сайтах інтернет-магазинів потрібно відображати товари, яких немає в наявності, вкінці списку, щоб не відволікати увагу покупця від доступних для покупки товарів. OpenCart за замовчуванням такої опції не надає. Проте це легко реалізується за допомогою простого OCMOD-модифікатора.

Що робить модифікатор

Модифікатор додає до SQL-запиту умовне сортування:

1
ORDER BY (p.quantity > 0) DESC

Це дозволяє спочатку показувати всі товари з кількістю більше нуля (тобто в наявності), а потім ті, яких немає на складі.

Код OCMOD-модифікатора

<?xml version="1.0" encoding="utf-8"?>
<modification>
  <code>outofstock_endlist</code>
  <name>outofstock_endlist</name>
  <version>1.0</version>
  <author>setbenson.com</author>
  <link>https://setbenson.com</link>
  <file path="catalog/model/catalog/product.php">
    <operation error="skip">
      <search><![CDATA[if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {]]></search>
      <add position="before"><![CDATA[
$sort_qty = '(p.quantity > 0) DESC,';
      ]]></add>
    </operation>
    <operation error="skip">
      <search><![CDATA[$sql .= " ORDER BY ]]></search>
      <add position="replace"><![CDATA[$sql .= " ORDER BY ".$sort_qty." ]]></add>
    </operation>
  </file>
</modification>

Як встановити

  1. ⬇️ Завантажте готовий модифікатор outofstock_endlist.ocmod.zip
  2. Зайдіть в адмінку OpenCart → Розширення → Менеджер доповнень.
  3. Завантажте zip-файл.
  4. Натисніть “Оновити модифікатори” та “Очистити кеш”.

Готово. Тепер ваші товари, в якийх кількість в адмінці зазначена менше 1 – вкінці будь-якого списку:
в категоріях, на сторінці виробника, в пошуку, на сторінці акцій.