Jump to content

Buscador en Categoría Activa...


vassago78

Recommended Posts

Hola buen día... alguien sabe de un buscador con la peculiaridad de buscar solo en la categoria y subcategorias de donde nos encontremos al momento de usar el buscador, por ejemplo...

Estamos en el Index y tenemos 2 categorías raiz y cada una cuenta con subcategorías... así:

Inicio--->

  • AUTOS

-Llantas
* Pirelli
* Michellin

-Sonido
* Sony
* Jvl

  • MOTOS

-Llantas
* Michellin
* Bridgestone

La idea es, que si estamos en Home y hacemos alguna busqueda por ejemplo: "Rin 17"" Busque en TODA la tienda lo relacionado a "Rin 17", pero, si nos encontramos dentro de la categoría AUTOS y buscamos "Rin 17", UNICAMENTE busque en La categoría AUTOS y sus Subcategorías... Se puede...???

 

Les agradeceré muuuucho su tiempo y ojalá encuentre algo. Saludos y suerte...!!!
 

Link to comment
Share on other sites

Nada?... no se si me expliqué bien, solo es que el buscador "comienze" la búsqueada a partir de la categoría en la que está y buesque también en sub-categorías...??? O alguien sabe hacer esa modificación al modulo de búsqueda que trae por defecto prestashop 1.5.4???, podríamos hablar sobre algún costo... Saludos...

Link to comment
Share on other sites

Hay un módulo en addons http://addons.prestashop.com/en/search-filters-prestashop-modules/2971-search-by-category.html que no es exactamente lo que buscas pero si tienes conocimientos de programación igual lo puedes adaptar fácilmente a tus necesidades.

 

Si prefieres hacer los cambios sobre el que viene por defecto en prestashop tienes que modificar la function llamada find dentro de classes/search.php.  Busca todo lo relacionado con 'category' dentro de esta función y adaptalo a lo que necesitas. Para obtener la category actual prueba con Tools::getValue('id_category') y si ves que recoge el valor se lo pasas por parámetro a la función find.

Edited by petete2008 (see edit history)
Link to comment
Share on other sites

Hay un módulo en addons http://addons.prestashop.com/en/search-filters-prestashop-modules/2971-search-by-category.html que no es exactamente lo que buscas pero si tienes conocimientos de programación igual lo puedes adaptar fácilmente a tus necesidades.

 

Si prefieres hacer los cambios sobre el que viene por defecto en prestashop tienes que modificar la function llamada find dentro de classes/search.php.  Busca todo lo relacionado con 'category' dentro de esta función y adaptalo a lo que necesitas. Para obtener la category actual prueba con Tools::getValue('id_category') y si ves que recoge el valor se lo pasas por parámetro a la función find.

 

 

Más o menos sería para que busca en la categoria actual.

Editar el fichero classes/search.php

 

buscar :

        $result = $db->ExecuteS('
        SELECT cp.`id_product`
        FROM `'._DB_PREFIX_.'category_group` cg
        INNER JOIN `'._DB_PREFIX_.'category_product` cp ON cp.`id_category` = cg.`id_category`
        INNER JOIN `'._DB_PREFIX_.'category` c ON cp.`id_category` = c.`id_category`
        INNER JOIN `'._DB_PREFIX_.'product` p ON cp.`id_product` = p.`id_product`
        WHERE c.`active` = 1 AND p.`active` = 1 AND indexed = 1
        AND cg.`id_group` '.(!$id_customer ?  '= 1' : 'IN (
            SELECT id_group FROM '._DB_PREFIX_.'customer_group
            WHERE id_customer = '.(int)$id_customer.'
        )'), false);

y reemplazarlo por

        $result = $db->ExecuteS('
        SELECT cp.`id_product`
        FROM `'._DB_PREFIX_.'category_group` cg
        INNER JOIN `'._DB_PREFIX_.'category_product` cp ON cp.`id_category` = cg.`id_category`
        INNER JOIN `'._DB_PREFIX_.'category` c ON cp.`id_category` = c.`id_category`
        INNER JOIN `'._DB_PREFIX_.'product` p ON cp.`id_product` = p.`id_product`
        WHERE c.`active` = 1 AND p.`active` = 1 AND indexed = 1
        AND cg.`id_group` '.(!$id_customer ?  '= 1' : 'IN (
            SELECT id_group FROM '._DB_PREFIX_.'customer_group
            WHERE id_customer = '.(int)$id_customer.' AND cp.`id_category` = '.(int)$id_category.'
        )'), false);
Edited by petete2008 (see edit history)
Link to comment
Share on other sites

No sabes como te lo agradezco... Voy a intentarlo porque la verdad es que tengo conocimientos muy básicos de esto que me mencionas, pero lo voy a a hacer... 

 

Solo una pregunta mas... ¿Este cambio de código que me proporcionaste, busca en la categoría activa y tambien en las subcategorías, o solo en esa categoría?

 

Saludos y una vez mas mil gracias... ya te informo...

Link to comment
Share on other sites

Pues no... Lamentablemente no pude... si cambio ese código, simplemente no busca nada y se va a una página en blanco...

 

Te comento que en donde está el código, varia (en mi caso) en 2 o 3 palabras, no se si esto tenga que ver... Te paso tal y como me aparece a mí:

 

 

 
$sql = 'SELECT cp.`id_product`
FROM `'._DB_PREFIX_.'category_group` cg
INNER JOIN `'._DB_PREFIX_.'category_product` cp ON cp.`id_category` = cg.`id_category`
INNER JOIN `'._DB_PREFIX_.'category` c ON cp.`id_category` = c.`id_category`
INNER JOIN `'._DB_PREFIX_.'product` p ON cp.`id_product` = p.`id_product`
'.Shop::addSqlAssociation('product', 'p', false).'
WHERE c.`active` = 1
AND product_shop.`active` = 1
AND product_shop.`visibility` IN ("both", "search")
AND product_shop.indexed = 1
AND cg.`id_group` '.(!$id_customer ?  '= 1' : 'IN (
SELECT id_group FROM '._DB_PREFIX_.'customer_group
WHERE id_customer = '.(int)$id_customer.'
)');

 

Pues aquí esta...

 

Ojalá no sea algo tan complicado...

 

Saludos.

Link to comment
Share on other sites

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...