Zangetsu Posted February 14, 2017 Share Posted February 14, 2017 (edited) 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 February 27, 2017 by Zangetsu (see edit history) Link to comment Share on other sites More sharing options...
Zangetsu Posted February 15, 2017 Author Share Posted February 15, 2017 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 More sharing options...
c0r3n Posted February 23, 2017 Share Posted February 23, 2017 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 More sharing options...
Zangetsu Posted February 28, 2017 Author Share Posted February 28, 2017 (edited) 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 February 28, 2017 by Zangetsu (see edit history) Link to comment Share on other sites More sharing options...
c0r3n Posted March 3, 2017 Share Posted March 3, 2017 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 More sharing options...
Zangetsu Posted March 17, 2017 Author Share Posted March 17, 2017 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 More sharing options...
Recommended Posts