reijo Posted June 19, 2015 Share Posted June 19, 2015 (edited) Hola, Me encuentro haciendo un modulo, y me he atascado en la parte final, agradecería vuestra ayuda. Lo único que quiero hacer es mostrar un listado de productos, como por ejemplo cuando vas a "Productos mas vendidos" que ves un listado de productos, pues quiero lo mismo, pero con una consulta que se ejecuta en ajax. Ya tengo la consulta sql que es perfectamente valida, alomejor solo es llamar a una clase, para que liste los id´s de los productos que mando o algo por el estilo no? pero no tengo ni idea de como hacerlo. Espero que se entienda y que me podais ayudar, si algo no se entiende decidmelo. Gracias. Edited July 2, 2015 by reijo (see edit history) Link to comment Share on other sites More sharing options...
gr_fenix Posted June 19, 2015 Share Posted June 19, 2015 Creo que el más vendidos no lo hace directamente por SQL, utiliza una especie de categoría. Creo... Después, tienes que usar el product_list (tpl y css) Link to comment Share on other sites More sharing options...
joseantgv Posted June 19, 2015 Share Posted June 19, 2015 Hola, Me encuentro haciendo un modulo, y me he atascado en la parte final, agradecería vuestra ayuda. Lo único que quiero hacer es mostrar un listado de productos, como por ejemplo cuando vas a "Productos mas vendidos" que ves un listado de productos, pues quiero lo mismo, pero con una consulta que se ejecuta en ajax. Ya tengo la consulta sql que es perfectamente valida, alomejor solo es llamar a una clase, para que liste los id´s de los productos que mando o algo por el estilo no? pero no tengo ni idea de como hacerlo. Espero que se entienda y que me podais ayudar, si algo no se entiende decidmelo. Gracias. La función a la que llamas tiene que devolver el HTML formateado con el listado de productos y eso lo printas en la pantalla. Asígnale desde PHP los productos a la plantilla product-list. Link to comment Share on other sites More sharing options...
reijo Posted June 19, 2015 Author Share Posted June 19, 2015 Gracias por contestar. Eso es exactemente lo que quiero hacer, pero no se como asignar a la plantilla product-list los productos desde php. Tengo el siguiente código, se trata de un ajax, ya se que no es correcto, dado que este código pertenece al interior de una función dentro de una clase de un modulo, ademas de que la ultima linea seria un return. $this->context->smarty->assign(array( 'products' => $products, 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 'nbProducts' => $nbProducts, 'homeSize' => Image::getSize(ImageType::getFormatedName('home')), 'comparator_max_item' => Configuration::get('PS_COMPARATOR_MAX_ITEM') )); $this->display(_PS_THEME_DIR_.'filtrado-productos.tpl'); Debería seguir por este camino? se podría hacer con un tools::redirect? también he pensado en un botón buscar en el tpl que llame a product-list pasandole los ids, pero no encuentro la manera de hacer que funcione. Para que os hagais una idea mejor pongo una captura del modulo. Se trata de buscar piezas especificas para x modelo de automovil. Link to comment Share on other sites More sharing options...
reijo Posted June 20, 2015 Author Share Posted June 20, 2015 alguna idea de como puedo acceder al listado? gr_fenix eso es lo que quiero hacer, pero no encuentro el modo, Gracias Link to comment Share on other sites More sharing options...
joseantgv Posted June 22, 2015 Share Posted June 22, 2015 Gracias por contestar. Eso es exactemente lo que quiero hacer, pero no se como asignar a la plantilla product-list los productos desde php. Tengo el siguiente código, se trata de un ajax, ya se que no es correcto, dado que este código pertenece al interior de una función dentro de una clase de un modulo, ademas de que la ultima linea seria un return. $this->context->smarty->assign(array( 'products' => $products, 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 'nbProducts' => $nbProducts, 'homeSize' => Image::getSize(ImageType::getFormatedName('home')), 'comparator_max_item' => Configuration::get('PS_COMPARATOR_MAX_ITEM') )); $this->display(_PS_THEME_DIR_.'filtrado-productos.tpl'); Debería seguir por este camino? se podría hacer con un tools::redirect? también he pensado en un botón buscar en el tpl que llame a product-list pasandole los ids, pero no encuentro la manera de hacer que funcione. Para que os hagais una idea mejor pongo una captura del modulo. Se trata de buscar piezas especificas para x modelo de automovil. Si en la variable $products tienes los productos, la asignación a la plantilla la haces correctamente. Luego en la plantilla tienes que recorrer ese array y generar la estructura HTML que necesitas. Has debugado la ejecución? Tienes los productos en la variable de la plantilla? Link to comment Share on other sites More sharing options...
reijo Posted June 22, 2015 Author Share Posted June 22, 2015 He realizado lo siguiente para tener acceso a this->context: en el ajax he creado un nuevo objeto del modulo donde envio al metodo el array de productos, y el numero de productos: $buscadorprod = new Buscadorprod(); $buscadorprod->getEnlace($products, $nbProducts); Depues en el metodo del modulo getEnlace(), de momento, he añadido un botón con un enlace al primer elemento del array. $context = Context::getcontext(); $product = $products[0]; echo "<a href='".$this->context->link->getProductLink($product)."'><button class='button btn btn-default button-small'><span>Ir a producto<i class='icon-chevron-right right'></i></span></button></a>"; Esto funciona perfectamente. Pero lo que quiero es hacer un listado con todos los elementos del array, pero claro, añadiendo el codigo que puse en el anterior post, no hace ni caso, por que lo que tendria que hacer seria un boton(o que directamente me redirija) a una pagina en la cual se vea el listado de productos. he probado lo siguiente, pero da error y no redirige. $this->context->smarty->assign(array( 'products' => $products, 'nbProducts' => $nbProducts )); $this->display(_PS_THEME_DIR_.'filtrado-productos.tpl'); alguna idea de por que puede ser? O alomejor la forma de ejecutarlo no es la correcta,habría otra manera de hacerlo? Link to comment Share on other sites More sharing options...
reijo Posted July 2, 2015 Author Share Posted July 2, 2015 Al final conseguí solucionarlo. Cree un controller siguiendo este hilo https://www.prestashop.com/forums/topic/327325-find-the-working-of-files-of-prestashop-1605/ Después hice un enlace al controller enviándole los parámetros del formulario y haciendo el listado como esta echo en el anterior post. De todas formas gracias por la ayuda! Link to comment Share on other sites More sharing options...
joseantgv Posted July 3, 2015 Share Posted July 3, 2015 Al final conseguí solucionarlo. Cree un controller siguiendo este hilo https://www.prestashop.com/forums/topic/327325-find-the-working-of-files-of-prestashop-1605/ Después hice un enlace al controller enviándole los parámetros del formulario y haciendo el listado como esta echo en el anterior post. De todas formas gracias por la ayuda! No vi tu anterior respuesta. Aunque ya lo has solucionado de esta forma, como lo hacías antes por AJAX sustituías el contenido que te devolvía la llamada AJAX en algún elemento del DOM para mostrarlo? Link to comment Share on other sites More sharing options...
reijo Posted July 21, 2015 Author Share Posted July 21, 2015 Buenas, perdón por tardar en responder, volvi de las vacaciones Por AJAX lo único que hacia era ir seleccionando los elementos que pertenecían a otros elementos, es decir, si seleccionas FORD, todos los modelos que pertenecen a FORD, como por ejemplo FOCUS, MONDEO, FIESTA, etc. y según avanzabas en las opciones se iba confeccionando la sentencia SQL. Al final quedo asi el tema. Y de nuevo gracias por la ayuda, siempre ayuda leer los comentarios de otros usuarios. Link to comment Share on other sites More sharing options...
apositivo Posted July 31, 2015 Share Posted July 31, 2015 hola reijo, saludos, excelente post ! felicitaciones por lograr solucionar todo ! estoy haciendo pruebas con prestashop, en mi caso tratando de que me traiga productos a peticion, ejemplo, al cargar la pagina el muestra un solo producto, SI HAGO CLICK EN EL BOTON VER MAS PRODUCTOS. QUIERO QUE via AJAX me traiga el segundo producto ( IMAGINEMOS QUE TENEMOS 10 PRODUCTOS en la base de datos). en base a tu solución crees que pudieras postear el procedimiento o metodo que empeleaste ? si puedes colocar codigo mucho mejor para ubicarnos visualmente. saludos y esperamos tu respuesta ! Link to comment Share on other sites More sharing options...
reijo Posted August 7, 2015 Author Share Posted August 7, 2015 Creo que lo que quieres hacer es bastante diferente a lo que hice yo, aun así se ve interesante, si creas un nuevo post mantennos informados para seguirlo. Para usar el ajax en Prestashop utilice el siguiente enlace. http://doc.prestashop.com/display/PS16/Using+jQuery+and+Ajax#UsingjQueryandAjax-MakingAjaxcallswithjQuery Espero que te sea de ayuda. Link to comment Share on other sites More sharing options...
apositivo Posted August 7, 2015 Share Posted August 7, 2015 (edited) hola reijo, saludos, puedes publicar el codigo ? he seguido este tutorial , pero nada http://flowcoding.com/module-with-ajax Edited August 7, 2015 by apositivo (see edit history) Link to comment Share on other sites More sharing options...
joseantgv Posted August 9, 2015 Share Posted August 9, 2015 Revisa este módulo: https://www.prestashop.com/forums/topic/292177-infinite-scroll-for-prestashop/ Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now