Товары с нулевым остатком в админке SimplaCMS

Товары с нулевым остатком в админке SimplaCMS

Дата публикации:
Поделиться:

Начнем, как это уже принято, с визуальной части - с шаблона списка товаров simpla/design/html/products.tpl. После кода (~ 184 строка)

<li {if $filter=='featured'}class="selected"{/if}><a href="{url keyword=null brand_id=null category_id=null page=null filter='featured'}">Рекомендуемые</a></li>

добавим строку

<li {if $filter=='stockout'}class="selected"{/if}><a href="{url keyword=null brand_id=null category_id=null page=null filter='stockout'}">Нулевой остаток</a></li>

Теперь перейдем к файлу отработки данного запроса simpla/ProductsAdmin.php. В нем после (~ 40 строка)

if($f == 'featured')
	$filter['featured'] = 1; 

добавим

elseif($f == 'stockout')
  $filter['in_stock'] = 0; 	

Поскольку в Симпле в файле api/Products.php есть выборка по остаткам (строки 82 и 206)

if(!empty($filter['in_stock']))
	$in_stock_filter = $this->db->placehold('AND (SELECT 1 FROM s_variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = ?', intval($filter['in_stock']));

но она не работает со значением "ноль", так как надо заменить

if(!empty($filter['in_stock']))

на

if(isset($filter['in_stock']))

Объясню причину замены. Функция empty считает $filter['in_stock'] = 0 также пустым значением, поэтому и не отрабатывает. В этом плане функция isset определяет наличие самого значения фильтр и отрабатывает. Не знаю по какой причине автор Симплы применил "пустой" метод, но тут придется его заменить.

Теперь можете смело пользоваться. Удачи в работе!

Отзывы

Ваш отзыв будет первым
Оставьте отзыв
На него будут приходить уведомление при ответе. На сайте не публикуется

Модули из этой тематики