Часто на сайтах інтернет-магазинів потрібно відображати товари, яких немає в наявності, вкінці списку, щоб не відволікати увагу покупця від доступних для покупки товарів. 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>
Як встановити
- ⬇️ Завантажте готовий модифікатор outofstock_endlist.ocmod.zip
- Зайдіть в адмінку OpenCart → Розширення → Менеджер доповнень.
- Завантажте zip-файл.
- Натисніть “Оновити модифікатори” та “Очистити кеш”.
Готово. Тепер ваші товари, в якийх кількість в адмінці зазначена менше 1 – вкінці будь-якого списку:
в категоріях, на сторінці виробника, в пошуку, на сторінці акцій.
