Code-Plus Posted October 7, 2013 Share Posted October 7, 2013 Buenas, Me gustaría saber si alguien me puede ayudar con las consultas SQL, quiero modificar las consultas para que sólo aparezcan los productos en stock, también para los conteos; y aclaro, no quiero desactivarlos, sino que la consulta select no los seleccione. Lo quiero cambiar para: -Listado de productos (categorías). -Mod. Novedades. -Mod. Productos destacados. -Mod. mejores ventas. -Mod. de búsqueda. Info: -Versión 1.5.4.1 -Mod. Existencias activado. -Uso el tema por defecto, pero modificado (aunque no afecta para este asunto). Gracias de antemano, un saludo. Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted October 7, 2013 Share Posted October 7, 2013 (edited) Ejemplo, mira lo que nos comenta Enrique Gomez para el listado de productos por categorías, aquí: http://www.prestashop.com/forums/topic/262470-solucionado-como-ocultar-productos-sin-stock/?do=findComment&comment=1313833 En la clase Category.php hay un método public function getProducts(..... donde hay una consulta SQL para mostrar los productos por categoría En la línea 640 si donde pone .' GROUP BY product_shop.id_product'; lo cambias y pones .' AND stock.quantity >0 GROUP BY product_shop.id_product'; Estarás filtrando los que tienen stock Yo creo que te funcionará, ya dirás. Recuerda que los cambios hechos en el "Core" de PS se pierden al actualizar. Saludos Edited October 7, 2013 by Sergio Ruiz (see edit history) Link to comment Share on other sites More sharing options...
Code-Plus Posted October 7, 2013 Author Share Posted October 7, 2013 Ejemplo, mira lo que nos comenta Enrique Gomez para el listado de productos por categorías, aquí: http://www.prestashop.com/forums/topic/262470-solucionado-como-ocultar-productos-sin-stock/?do=findComment&comment=1313833 Buenas Sergio, gracias por contestar. Esa parte la tengo modificada, es fácil, pero no encuentro la función que cuenta los productos, es decir: -Por un lado, sólo selecciona los productos en stock. -Por otro, la función que cuenta (que es a la primera que llama para comprobar si existe algo en la tabla) es distinta, por tanto, en la fila superior del listado de categorías aparece, por ejemplo, 32 productos, y el listado contiene (el modificado) 5 productos; además de formatear la página según el número, por tanto formatea para 32 con sus respectivos números de paso de página siguiente. Además, esa modificación sólo sirve si no usas el mod. de existencias, si le usas, el stock se almacena en otra tabla, por tanto hay que cruzar la consulta con otra tabla distinta. De todas formas gracias por contestar, un saludo. Link to comment Share on other sites More sharing options...
nadie Posted October 8, 2013 Share Posted October 8, 2013 El modulo de novedades, trabaja con la función: Trabaja con la función: getNewProducts que encontraras en la clase: /classes/Product.php --- El modulo de productos destacados, trabaja con la función: getProducts de la clase /classes/Category.php --- El módulo de mejores ventas trabaja con la función: getBestSalesLight que encontraras en la clase: /classes/ProductSale.php -- El modulo de busqueda trabaja con la función: find de la clase /classes/Search.php etc... ¿Hasta esas funciones has llegado, o quieres saber como modificas las consultas sql de esas funciones? Link to comment Share on other sites More sharing options...
fbaquero Posted October 8, 2013 Share Posted October 8, 2013 ¿Y por qué quieres hacerlo desde la consulta SQL? Te sería más fácil filtrar los resultados en el template, sobre todo para futuras actualizaciones. Sería tan fácil como añadir un {if $product.qtty > 0}…{/if} en los .tpl afectados. Link to comment Share on other sites More sharing options...
nadie Posted October 8, 2013 Share Posted October 8, 2013 ¿Y por qué quieres hacerlo desde la consulta SQL? Te sería más fácil filtrar los resultados en el template, sobre todo para futuras actualizaciones. Sería tan fácil como añadir un {if $product.qtty > 0}…{/if} en los .tpl afectados. Es una opción tambien, pero lo comento a modo personal por que lo tengo analizado que esa condicional en esos casos en el tpl es peligrosa y conlleva una carga excesiva de recursos, porque no estas parando la ejecución de la consulta, estas cortando simplemente la impresión en el tpl. Con pocos productos te vale, pero con una cantidad de productos grandes se nota a efectos internos. Link to comment Share on other sites More sharing options...
Code-Plus Posted October 8, 2013 Author Share Posted October 8, 2013 Además, ahora tengo una pequeña confusión, la versión 1.5 tiene incluido el ocultamiento de stock? La opción se encuentra en: Preferencias > Productos > Op. ¿Mostrar productos no disponibles en la página de producto? Está opción es para que no muestre los productos sin stock, sólo en los listados de categorías? Si es así, no es necesario modificar el getProducts, cierto? Gracias, un saludo. Link to comment Share on other sites More sharing options...
Code-Plus Posted October 8, 2013 Author Share Posted October 8, 2013 (edited) El problema de modificar el tpl, es que como la consulta original se hace completa, se formatea la página para todos esos productos, y queda muy feo. Por ejemplo, una consulta de productos nuevos resulta 55 productos, pero en realidad sólo 2 son con stock, modificando el tpl, te prepara la página para mostrar 55 productos en vez de 2; y las diferencias son considerables. Además, desde la consulta es mucho más limpio y profesional Respecto a las actualizaciones, ya está díficil, ahora que casi acabe de ponerlo como quiero, salio la última; con la cantidad de modificaciones que he hecho y donde las he hecho; ya no me sirve un autoUpdate. Un saludo! Edited October 8, 2013 by imHOTTO (see edit history) Link to comment Share on other sites More sharing options...
nadie Posted October 8, 2013 Share Posted October 8, 2013 Además, ahora tengo una pequeña confusión, la versión 1.5 tiene incluido el ocultamiento de stock? La opción se encuentra en: Preferencias > Productos > Op. ¿Mostrar productos no disponibles en la página de producto? Está opción es para que no muestre los productos sin stock, sólo en los listados de categorías? Si es así, no es necesario modificar el getProducts, cierto? Gracias, un saludo. Esa opción esta mal traducida, cuando ves la opción en ingles se llamada. (La opción, creo recordar que va mas por el tema de las combinaciones, vamos creo que no tiene que ver con el listado de productos si no me falla la memoria) Display unavailable product attributes on the product page Link to comment Share on other sites More sharing options...
Code-Plus Posted October 8, 2013 Author Share Posted October 8, 2013 Sí es esa, es que por comodidad, solía usar la Guía de la versión 1.4; hasta que llegue a los cambios sustanciales...ahora sigo la Guía del 1.5 Aún así, la opción no me queda muy clara. Se supone que si tienes un producto de varios colores, si falta un color no te muestra la opción de comprarlo. La duda es, y si faltan todos? en teoría el código no debería de mostrar ninguno. Link to comment Share on other sites More sharing options...
fbaquero Posted October 8, 2013 Share Posted October 8, 2013 ...esa condicional en esos casos en el tpl es peligrosa y conlleva una carga excesiva de recursos, porque no estas parando la ejecución de la consulta, estas cortando simplemente la impresión en el tpl. Vaya! Gracias por la aclaración Link to comment Share on other sites More sharing options...
nadie Posted October 8, 2013 Share Posted October 8, 2013 Vaya! Gracias por la aclaración Vamos, pero lo que comento ocurre en ocasiones en las que se mueven mucho muchos productos, sino es asi, no me preocuparia, ya que en el tpl puedes hacer de todo prácticamente. (creo *) Link to comment Share on other sites More sharing options...
Code-Plus Posted October 13, 2013 Author Share Posted October 13, 2013 Hola Nadie, no soy capaz de modificar la consulta para getNewProducts; me puedes echar una mano? Y, cual es la consulta del blockspecials? Gracias! Un saludo. Link to comment Share on other sites More sharing options...
fmanuelm Posted October 31, 2013 Share Posted October 31, 2013 Hola, Yo tambien tuve un caso un poco particular y al principio comence a usar la salida tpl para filtrar, luego me concenci que no tenia los recursos sufiente en codigo para todo el filtro. En mi caso mi fui al modulo seach de mi filtrador de productos y modifique la array que manda a la tpl. Ciertamente mi problema era que queria filtrar según ciertos atributos, pero se me complico con la consulta sql y tuve que emplear ese medio y todo me esta funcioando de maravillas. Suerte. Link to comment Share on other sites More sharing options...
nadie Posted October 31, 2013 Share Posted October 31, 2013 Hola, Yo tambien tuve un caso un poco particular y al principio comence a usar la salida tpl para filtrar, luego me concenci que no tenia los recursos sufiente en codigo para todo el filtro. En mi caso mi fui al modulo seach de mi filtrador de productos y modifique la array que manda a la tpl. Ciertamente mi problema era que queria filtrar según ciertos atributos, pero se me complico con la consulta sql y tuve que emplear ese medio y todo me esta funcioando de maravillas. Suerte. ¿Modulo search de filtrador de productos? ¿Te refieres al modulo de busqueda rapida que lleva prestashop o al modulo de navegacion por facetas o a un modulo que has desarrollado desde cero? u ¿Te refieres al desplegable filtrador del listado de productos? Seria positivo, si pudieras compartir tu aporte de forma completa con la Comunidad, así le serviría de ayuda para otros usuarios. Saludos, @imHOTTO como comente en el foro: http://www.prestashop.com/forums/topic/282730-comunicado-de-despedida-de-la-comunidad-por-parte-del-usuario-nadie/?view=findpost&p=1422288 me voy breve para siempre del foro, por lo que ya estoy en modo casi-desactivado, y en unos días en modo totalmente desactivado. Saludos, Saludos, Link to comment Share on other sites More sharing options...
Recommended Posts