Noxter Posted February 22, 2019 Report Share Posted February 22, 2019 (edited) Файл simpla/ProductsAdmin.php строка примерно 32: // Текущий бренд $brand_id = $this->request->get('brand_id', 'integer'); if($brand_id && $brand = $this->brands->get_brand($brand_id)) { $filter['brand_id'] = $brand->id; } else { $filter['brand_id'] = ''; } Далее в api/Products.php в двух функциях (get_products и count_products) найдите код: if(!empty($filter['brand_id'])) $brand_id_filter = $this->db->placehold('AND p.brand_id in(?@)', (array)$filter['brand_id']);и поменяйте его на следующий: if(!empty($filter['brand_id'])) { $brand_id_filter = $this->db->placehold('AND p.brand_id in(?@)', (array)$filter['brand_id']); } elseif(isset($filter['brand_id'])) { $brand_id_filter = $this->db->placehold('AND p.brand_id IS NULL OR p.brand_id = ?', $filter['brand_id']); }Файл simpla/design/html/products.tpl в нужном месте пропишите ссылку: index.php?module=ProductsAdmin&brand_id= Edited February 22, 2019 by Noxter Quote Link to post Share on other sites
phukortsin Posted February 22, 2019 Report Share Posted February 22, 2019 Файл simpla/ProductsAdmin.php строка примерно 32: // Текущий бренд $brand_id = $this->request->get('brand_id', 'integer'); if($brand_id && $brand = $this->brands->get_brand($brand_id)) { $filter['brand_id'] = $brand->id; } else { $filter['brand_id'] = ''; } Далее в api/Products.php в двух функциях (get_products и count_products) найдите код: if(!empty($filter['brand_id'])) $brand_id_filter = $this->db->placehold('AND p.brand_id in(?@)', (array)$filter['brand_id']); и поменяйте его на следующий: if(!empty($filter['brand_id'])) { $brand_id_filter = $this->db->placehold('AND p.brand_id in(?@)', (array)$filter['brand_id']); } elseif(isset($filter['brand_id'])) { $brand_id_filter = $this->db->placehold('AND p.brand_id IS NULL OR p.brand_id = ?', $filter['brand_id']); } Файл simpla/design/html/products.tpl в нужном месте пропишите ссылку:index.php?module=ProductsAdmin&brand_id= Интересный подход.Если это установить на стандартную Simpla, то при открытии админки вместо привычного списка товаров будет пустое место с сообщением 'Нет товаров'.Если кликать Рекомендуемые, Со скидкой, Активные, Неактивные, Отсутствующие, тоже 'Нет товаров'.Если кликать по категориям, тоже 'Нет товаров'.Админа от такого удар хватить может... Если чуть-чуть на код посмотреть, сразу пару грубых ошибок видно... Товарищи заказчики! Остерегайтесь подобных специалистов 'с большими скилами'... А может, это так и задумано - шутка гения? Quote Link to post Share on other sites
Noxter Posted February 22, 2019 Author Report Share Posted February 22, 2019 Так и задумано, специально для того чтобы ты сделал лучше и выложил для всех бесплатно P.S. Корс побесись ещё, уже 7к постов, прям соль тебе на рану Quote Link to post Share on other sites
question Posted February 24, 2019 Report Share Posted February 24, 2019 (edited) simpla/ProductsAdmin.php Заменить это // Текущий бренд $brand_id = $this->request->get('brand_id', 'integer'); if($brand_id && $brand = $this->brands->get_brand($brand_id)) $filter['brand_id'] = $brand->id; на это // Текущий бренд $brand_id = $this->request->get('brand_id', 'integer'); if($brand_id) { $filter['brand_id'] = $brand_id; $brand = $this->brands->get_brand($brand_id); } Далее в api/Products.php в двух функциях (get_products и count_products) заменить это if(!empty($filter['brand_id'])) $brand_id_filter = $this->db->placehold('AND p.brand_id in(?@)', (array)$filter['brand_id']); на это if(!empty($filter['brand_id'])) { if ($filter['brand_id'] < 999999) { $brand_id_filter = $this->db->placehold('AND p.brand_id in(?@)', (array)$filter['brand_id']); } else { $brand_id_filter = 'AND p.brand_id IS NULL OR p.brand_id = 0'; } } теперь по адресу site.ru/index.php?module=ProductsAdmin&brand_id=999999 будут выводиться товары без принадлежности к бренду.Ремарка. Если у вас 999999 брендов, то работать не будет. Edited February 24, 2019 by question Quote Link to post Share on other sites
osben Posted February 28, 2019 Report Share Posted February 28, 2019 (edited) if ($filter['brand_id'] < 999999) isset Edited February 28, 2019 by osben Quote Link to post Share on other sites
phukortsin Posted March 1, 2019 Report Share Posted March 1, 2019 if ($filter['brand_id'] < 999999) isset Это никак не поможет и даже навредит. Условие isset($filter['brand_id']) в этом месте будет всегда истинным (потому что оно внутри блока, в котором истинно !empty($filter['brand_id']) ), и, как следствие, товары без бренда просто никогда не покажет - вся цель доработки будет убита напрочь... Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.