Jump to content

[SOLUCIONADO] Transportistas por categoria


Recommended Posts

Buenos días,

 

estoy empezando con prestashop y he conseguido realizar un modulo para crear una tabla mysql con las asociaciones entre categorias y transportistas, ya que en el carrito de compra quiero recorrer los productos que el usuario ha seleccionado, buscar su categoria y así recuperar que transportistas quiero que el usuario visualice.

 

He visto que los controller con los que funciona son OrderController y ParentOrderController y el tpl order-carrier.tpl junto con la clase Carrier, pero no encuentro la manera de que me de los transportistas que quiero, siempre muestras los originales.

 

Alguien me puede ayudar,

Muchas gracias!!!

 

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

He realizado un override en la clase Carrier sobre la función getCarriersForOrder, copiando la misma función y añadiendo al final la consulta sobre mi tabla, y he comprobado que devuelve correctamente los transportistas que necesito con un var_dump de $results_array pero cuando me voy al frontend lo hace bien si solo selecciono un producto (selecciono con código su id_category veo a que transportista esta seleccionado y lo agrego al $results_array) pero si selecciono productos para que me muestre varios transportistas , aunque el var_dump me dice que estan todos los que quiero realmente no muestra todos los transportistas.

 

¿Alguien sabe que podria ser o si no es la función correcta la que estoy usando?

Link to comment
Share on other sites

a mi tambien me interesa, me podrías explicar mas o menos como lo has hecho? lo mismo hasta puedo ayudar, quisiera si puede ser que me dijeras como has encontrado esa funcion, por que la que yo veo en manufacturer (es ese módulo no?) es getContent pero ciertamente no veo como recoge los datos de la base de datos..

Link to comment
Share on other sites

En la zona privada me hice el modulo para asociar los transportistas con los productos que no quiero que lleven, todo esto en una tabla mysql creada en el modulo.

Y luego cree un override de la clase carrier.php y mas concretamente de la función getCarriersForOrder y dentro de ella pongo

 $results_array = parent::getCarriersForOrder($id_zone, $group, $cart, $error);

 

En el carrier.php cree una función para recorrer los productos del carrito, obtener la id de la categoria de forma recursiva hasta llegar a la categoria de primer nivel. De esta manera tengo ya guardado un array con todos los id de transportistas que intervienen en los productos del carrito.

 

Como segunda función tengo el override mencionado anteriormente, aqui voy recorriendo $results_array con un foreach y voy comparando con el array de la otra función.

Si el carrier que estoy recorriendo no se encuentra en mi array lo almaceno en un array temporal. Cuando termino de recorrer asigno el array temporal a $results_array y lo devuelvo.

 

return $results_array;

 

La función esta el archivo Carrier.php de la carpeta classes de prestashop.

 

Espero que te ayude,

Saludos!!!

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

y no hay alguna manera tipo algo asi:

Se sabe la categoria que está mostrando por alguna variable que esté definida, y luego haces una consulta a Carriers (o en mi caso a manufacturer por categoria)

Es que lo que yo quiero hacer es mostrar los fabricantes por categoria, y creo que me puede ayudar tu módulo... no?

Link to comment
Share on other sites

  • 2 weeks later...

Buenos días,

 

disculpa no he podido conectarme antes.

 

Si realizas un var_dump de $results_array veras que están todos los datos relacionados con el producto (fabricante, categoria....), solo tienes que jugar con ese array que se envía para discriminar, antes de enviarlo, los trasnportistas que quieres que se muestren en el carrito según los productos escogidos por el usuario.

 

Un saludo.

Link to comment
Share on other sites

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