vassago78 Posted October 15, 2013 Share Posted October 15, 2013 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* BridgestoneLa 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 More sharing options...
petete2008 Posted October 18, 2013 Share Posted October 18, 2013 No conozco ningún módulo pero para lo que tú quieres tendrías que modificar la clase search.php de forma que puedas adaptarla a tus necesidades. Lo mejor es que si no sabes programar php te pongas en contacto con algún programador. Link to comment Share on other sites More sharing options...
vassago78 Posted October 25, 2013 Author Share Posted October 25, 2013 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 More sharing options...
petete2008 Posted October 25, 2013 Share Posted October 25, 2013 (edited) 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 October 25, 2013 by petete2008 (see edit history) Link to comment Share on other sites More sharing options...
petete2008 Posted October 25, 2013 Share Posted October 25, 2013 Revisando addons encontré esto http://addons.prestashop.com/en/search-filters-prestashop-modules/7447-simple-search-by-category.html Revísalo por si es lo que buscas... Ya nos cuentas Link to comment Share on other sites More sharing options...
petete2008 Posted October 25, 2013 Share Posted October 25, 2013 (edited) 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 October 25, 2013 by petete2008 (see edit history) Link to comment Share on other sites More sharing options...
vassago78 Posted October 26, 2013 Author Share Posted October 26, 2013 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 More sharing options...
vassago78 Posted October 26, 2013 Author Share Posted October 26, 2013 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 More sharing options...
petete2008 Posted October 27, 2013 Share Posted October 27, 2013 varia en cada version de prestashop. Y el código que te pase solo buscaría en la categoria activa. Habría que ir modificándolo para obtener lo que tu quieres. Link to comment Share on other sites More sharing options...
vassago78 Posted October 28, 2013 Author Share Posted October 28, 2013 Ok, muchas gracias... Link to comment Share on other sites More sharing options...
Recommended Posts