cancel
Showing results for 
Search instead for 
Did you mean: 

Modificar catalog search para hacer búsqueda personalizada

Modificar catalog search para hacer búsqueda personalizada

Quiero modificar mi búsqueda y personalizarla, intencionado hacer un modulo para hacer esto. 

Actualmente ya logre hacer mi búsqueda tal cual la necesito pero lo hago directamente en el archivo Vendor/Magento/Framework/Search/Adapter/MySql/Adapter.php en su metodo query($request),  llega un $request con la información de la búsqueda. entonces ahí intercepto y modifico para hacer mi búsqueda personalizada.

 

//Codigo sin Modificar 
$documents = $this->getDocuments($table); // Obtenemos los Id´s de la buqueda nativa de magento $aggregations = $this->aggregationBuilder->build($request, $table, $documents); $response = [ 'documents' => $documents, 'aggregations' => $aggregations, ];

 

Entonces Modifico de esta Manera

 

//Codigo Modificado
$requestSearch = $request->getQuery()->getShould()['search']->getValue(); //recuperamos Value del Objeto Request
$result_ids = $this->getDataOerp($requestSearch); //Manadamos a buscar a OpenERP
$resultSearch = $this->setArrayData($result_ids); //Me crea un arreglo identico a como lo creaba getDocuments($table)
$aggregations = $this->aggregationBuilder->build($request, $table, $resultSearch); //Modificamos $document por $resultSerach
            $response = [
                'documents' => $resultSearch,
                'aggregations' => $aggregations,
            ];

 

Hago 2 funciones, una para modificar la búsqueda a como la necesito y otra para que me retorne un array como lo hacia anteriormente el método getDocument().

 

Pero :

 

Al llegar a este punto mi búsqueda tarda aproximadamente 10 segundos y pasar por una infinidad de archivos . Es por eso que quisiera hacer mi propio modulo que haga la búsqueda.

 

Entonces me pregunto varias cosas:

 

  1. Si omito todas las clases por donde pasa la búsqueda,  ¿Que pasaria? ¿Podria hacer que no pase por todas esas clases generando objetos?
  2. Donde podre interceptar la búsqueda inmediatamente después de hacer la búsqueda 
  3. Donde podre llamar a la clase que me genere la vista

Espero me puedan ayudar !!