Перейти к содержанию
Официальный форум поддержки Simpla

Выборка из корневой категории через фильтр get_products


Перейти к решению Решено Kors,

Рекомендуемые сообщения

Когда я на сайте выбираю корневую категорию (site.com/category/name), отображаются все товары включая подкатегории. Но фильтр по продуктам в функции get_products (api/Products.php) по параметру category_id делает выборку только из конечной категории. Это нормальное явление или у меня что-то не так работает?

Ссылка на сообщение
Поделиться на другие сайты

Это нормально, так и задумано.

 

Видимо, фильтр у Вас самодельный. Пробуйте действовать по образцу view/ProductsView.php,

в котором   get_products получает  category_id как массив подкатегорий, что делается в строке

        $filter['category_id'] = $category->children;

 

Ссылка на сообщение
Поделиться на другие сайты

Это нормально, так и задумано.

 

Видимо, фильтр у Вас самодельный. Пробуйте действовать по образцу 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 уровня работать к сожалению не будут видимо...

Изменено пользователем mikeevstropov
Ссылка на сообщение
Поделиться на другие сайты
  • Решение

...если появится подкатегория в 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;
}
Изменено пользователем Kors
Ссылка на сообщение
Поделиться на другие сайты

 

изобретено и написано
 
Kors, Сегодня, 14:30

 

:blink:

 

Я тут вам аватарку нашел...

 

 

Еще раз спасибо!

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...