Потребовалось добавить несколько пунктов в админке Simpla CMS
Вывод
- активных товаров
- не активных товаров
- с остатками больше нуля
- с нулевыми остатками ( активные и не активные)
- активных товаров с остатком ноль
1.
Начнем, как это уже принято, с визуальной части - с шаблона списка товаров simpla/design/html/products.tpl.
добавим строки
Активные
Не Активные
Остаток >0 - Все
Остаток 0 - Все
Остаток 0 + Активные
2.
Теперь перейдем к файлу отработки данного запроса simpla/ProductsAdmin.php.
после
if($f = $this->request->get('filter', 'string'))
{
Добавляем строки, кроме тех что у Вас уже есть
elseif($f == 'stockout')
$filter['in_stock'] = 1;
elseif($f == 'stock0')
$filter['stock0'] = 1;
elseif($f == 'stock0_visible')
$filter['stock0_visible'] = 1;
elseif($f == 'visible_no')
$filter['visible'] = 0;
3.
Поскольку в Симпле в файле api/Products.php есть выборка по остаткам
if(isset($filter['in_stock']))
$in_stock_filter = $this->db->placehold('AND (SELECT 1 FROM __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(isset($filter['stock0']))
$in_stock_filter = $this->db->placehold('AND (SELECT 1 FROM __variants pv WHERE pv.product_id=p.id AND (pv.stock=0 ) LIMIT 1) = ?', intval($filter['stock0']));
if(isset($filter['stock0_visible']))
$in_stock_filter = $this->db->placehold('AND p.visible=1 AND (SELECT 1 FROM __variants pv WHERE pv.product_id=p.id AND (pv.stock=0 ) LIMIT 1) = ?', intval($filter['stock0_visible']));
if(isset($filter['visible']))
$visible_filter = $this->db->placehold('AND p.visible=?', intval($filter['visible']));
и обращаем внимание на if(!empty вместо указано if(isset
и повторяем два раза - для подсчета количества и для вывода товаров
Вывод
- активных товаров
- не активных товаров
- с остатками больше нуля
- с нулевыми остатками ( активные и не активные)
- активных товаров с остатком ноль
1.
Начнем, как это уже принято, с визуальной части - с шаблона списка товаров simpla/design/html/products.tpl.
добавим строки
2.
Теперь перейдем к файлу отработки данного запроса simpla/ProductsAdmin.php.
после
if($f = $this->request->get('filter', 'string'))
{
Добавляем строки, кроме тех что у Вас уже есть
elseif($f == 'stockout')
$filter['in_stock'] = 1;
elseif($f == 'stock0')
$filter['stock0'] = 1;
elseif($f == 'stock0_visible')
$filter['stock0_visible'] = 1;
elseif($f == 'visible_no')
$filter['visible'] = 0;
3.
Поскольку в Симпле в файле api/Products.php есть выборка по остаткам
if(isset($filter['in_stock']))
$in_stock_filter = $this->db->placehold('AND (SELECT 1 FROM __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(isset($filter['stock0']))
$in_stock_filter = $this->db->placehold('AND (SELECT 1 FROM __variants pv WHERE pv.product_id=p.id AND (pv.stock=0 ) LIMIT 1) = ?', intval($filter['stock0']));
if(isset($filter['stock0_visible']))
$in_stock_filter = $this->db->placehold('AND p.visible=1 AND (SELECT 1 FROM __variants pv WHERE pv.product_id=p.id AND (pv.stock=0 ) LIMIT 1) = ?', intval($filter['stock0_visible']));
if(isset($filter['visible']))
$visible_filter = $this->db->placehold('AND p.visible=?', intval($filter['visible']));
и обращаем внимание на if(!empty вместо указано if(isset
и повторяем два раза - для подсчета количества и для вывода товаров