mikeevstropov Опубликовано 27 октября, 2015 Жалоба Поделиться Опубликовано 27 октября, 2015 Когда я на сайте выбираю корневую категорию (site.com/category/name), отображаются все товары включая подкатегории. Но фильтр по продуктам в функции get_products (api/Products.php) по параметру category_id делает выборку только из конечной категории. Это нормальное явление или у меня что-то не так работает? Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 27 октября, 2015 Жалоба Поделиться Опубликовано 27 октября, 2015 Это нормально, так и задумано. Видимо, фильтр у Вас самодельный. Пробуйте действовать по образцу view/ProductsView.php,в котором get_products получает category_id как массив подкатегорий, что делается в строке $filter['category_id'] = $category->children; Цитата Ссылка на сообщение Поделиться на другие сайты
mikeevstropov Опубликовано 27 октября, 2015 Автор Жалоба Поделиться Опубликовано 27 октября, 2015 (изменено) Это нормально, так и задумано. Видимо, фильтр у Вас самодельный. Пробуйте действовать по образцу view/ProductsView.php,в котором get_products получает category_id как массив подкатегорий, что делается в строке $filter['category_id'] = $category->children; Спасибо! Получилось вот что. if($params['category_id']){ $category = $this->categories->get_category((int)$params['category_id']); if(empty($category) || (!$category->visible)) return false; // получаем дочерние категории if( isset($category->subcategories) ){ $category_ids = array(); // добавим корневую категорию в массив $category_ids[] = $params['category_id']; foreach($category->subcategories as $key => $val){ // добавим подкатегорию в массив if( $category->subcategories[$key]->visible == $params['visible'] ) $category_ids[] = $category->subcategories[$key]->id; } $params['category_id'] = $category_ids; } } // получаем элементы foreach($this->products->get_products($params) as $p){ $products[$p->id] = $p; $products[$p->id]->features = $this->features->get_product_options(array('product_id'=>$p->id)); if(empty($products[$p->id]->features)) unset($products[$p->id]->features); } Но категории 3 уровня работать к сожалению не будут видимо... Изменено 27 октября, 2015 пользователем mikeevstropov Цитата Ссылка на сообщение Поделиться на другие сайты
Решение Kors Опубликовано 27 октября, 2015 Решение Жалоба Поделиться Опубликовано 27 октября, 2015 (изменено) ...если появится подкатегория в 3 уровне, конечно же ключ "children" ее не увидит. Это Вы просто придумали, или ПРОВЕРИЛИ точно? До сих пор $category->children содержало потомков ЛЮБОЙ глубины... Усложняете все неимоверно...Все уже давно изобретено и написано:// получаем дочерние категории if($params['category_id']){ $category = $this->categories->get_category((int)$params['category_id']); $params['category_id'] = $category->children; } // получаем товары foreach($this->products->get_products($params) as $p){ $products[$p->id] = $p; } Изменено 27 октября, 2015 пользователем Kors Цитата Ссылка на сообщение Поделиться на другие сайты
mikeevstropov Опубликовано 27 октября, 2015 Автор Жалоба Поделиться Опубликовано 27 октября, 2015 изобретено и написано Kors, Сегодня, 14:30 Я тут вам аватарку нашел... Еще раз спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
MoJo Опубликовано 25 марта, 2016 Жалоба Поделиться Опубликовано 25 марта, 2016 Парни, не скромный вопрос, а куда же вставлять этот код? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.