Jump to content

Mostrar Listado de productos (SOLUCIONADO)


reijo

Recommended Posts

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 by reijo (see edit history)
Link to comment
Share on other sites

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

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.

 

11imtj5.jpg

Link to comment
Share on other sites

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.

 

11imtj5.jpg

 

 

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

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

  • 2 weeks later...

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

  • 3 weeks later...

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. 

 

thump_9421204coches.png

 

 

Y de nuevo gracias por la ayuda, siempre ayuda leer los comentarios de otros usuarios.  :)

Link to comment
Share on other sites

  • 2 weeks later...

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...