cancel
Showing results for 
Search instead for 
Did you mean: 

La búsqueda entre categorías padre.

La búsqueda entre categorías padre.

Hola a todos, he desarrollado un módulo con searchCritería que busca entre las categorías, pero solo encuentra en las subcategorías si le digo que solo muestre las categorías padre, muestra la cantidad de productos, pero no muestra ningún resultado.

 

Captura de pantalla 2018-02-16 16.56.11.png

Si le cambio el nivel a subcategorías si encuentra.

 

Conocéis el motivo de porque no muestra productos del padre pero si de las hijas .

 

Gracias!!

Desarrollador Front-End
3 REPLIES 3

Re: La búsqueda entre categorías padre.

Hola @mnuhell,


Sin ver o probar el código es medio difícil pero ¿quizás es que los productos están asociados a las categorías hijas solamente y al ser anchor te las contabiliza en la categoría padre?

Re: La búsqueda entre categorías padre.

Hola @Damian Culotta 

 

Realmente es un foreach que recorre todas las categorias y solo muestra las padre, en ellas cuenta en total de todos los productos, que hay en sus subcategorías.

 

Luego creo una método que captura lo que se ha elegido en el select y con un método muy parecido al que tienes en tu totorial de searchcritería, devuelvo los items de la selección, cuando eliges una subcategoría si que muestra los resultados, pero ahora solo se muestran las categorías padre por lo que no muestra ningún resultado.

 

Aquí lo puedes probar http://obs.webioss.com/

 

Habría que añadir todos los productos de las subcategorías a la categoría padre?

 

public function getProducts()
    {

        $filterPrice = $this->filterBuilder
            ->setField('price')
            ->setConditionType('lt')
            ->setValue($this->getPriceSearch())
            ->create();

        $filterCategory = $this->filterBuilder
            ->setField('category_id')
            ->setConditionType('eq')
            ->setValue($this->getCategorySearch())
            ->create();

        $filterGroupType = $this->filterGroup;
        $filterGroupPrice = clone $filterGroupType;
        $filterGroupCategory = clone $filterGroupType;
 
        $filterGroupPrice->setFilters([$filterPrice]);
        $filterGroupCategory->setFilters([$filterCategory]);

        $searchCriteria = $this->searchCriteriaBuilder->setFilterGroups([$filterGroupPrice, $filterGroupCategory]);

        $searchResults = $this->productRepository->getList($searchCriteria->create());

        $products = $searchResults->getItems();

        return $products;
    }

 

Un saludo!! 

 

 

Desarrollador Front-End

Re: La búsqueda entre categorías padre.

Hola @Damian Culotta

Tengo una duda con el setConditionType "from" and "to" a ver si sabes como lo gestiona Magento.

Tengo este filtro o me gustaría tener este filtro y lo tengo así.

$filterPrice = $this->filterBuilder
            ->setField('price')
            ->setConditionType("from", $minPrice)
            ->setConditionType("to", $maxPrice)
            ->setValue($minPrice)
            ->setValue($maxPrice)
            ->create();

Pero cuando me devuelve los productos solo hace la última condición en este caso el "to",

 

object(Magento\Framework\Api\Filter)#2293 (1) {
  ["_data":protected]=>
  array(3) {
    ["field"]=>
    string(5) "price"
    ["condition_type"]=>
    string(2) "to"
    ["value"]=>
    string(4) "2.99"
  }
}

he probado hacerlo con dos filtros, pero los productos que muestra no son los correctos, ya que si le digo que sea entre 4.00€ y 10.00€ me muestra productos con un precio de 0.33€.

 

Gracias!!

Desarrollador Front-End