Jump to content

Edit History

Prestafan33

Prestafan33

Muchas gracias, por los aportes, Juanjomg.

Cuento mi experiencia, por si sirve de ayuda: En mi caso me pidieron que añadiera una columna al panel de administración de productos donde apareciera el precio con descuento y con impuestos incluidos (en el panel de Prestashop aparece por defecto el precio con y sin impuestos, pero nada más).

Lo que hice fue copiar en un módulo creado para la ocasión las plantillas twig ubicadas en /src/Prestashopbundle/Resource/views/Admin/Product/CatalogPage/Lists/list.html.twig y product_table.html.twig.

A continuación introduje unos hooks personalizados, en donde quería que apareciera mi columna, una para mostrar la cabecera, otra para meter un select de filtrado y otra para mostrar los valores. Usando esos hooks cargué unas plantillas de vistas con el contenido para cada una de esas secciones.

Finalmente, usé el hook "actionAdminProductsListingFieldsModifier" para hacer las modificaciones pertinentes en las consultas para obtener de la base de datos los campos que necesitaba. Como los descuentos no se almacenan tal cual en la base de datos, sino que dependen de fechas, porcentajes, valores e impuestos, lo que hice fue añadir esos campos en la consulta y luego operar con ellos para calcular en cada caso el precio con descuento. Aunque eso en el caso de las plantillas da igual.

El caso es que funcionar, funciona correctamente. Pero claro, como bien ha dicho @Juanjomg, para poder meter los hooks personalizados dentro de esas dos vistas he tenido que copiarlas completas, tal cual están, dentro de mi módulo, ya que los bloques que necesito modificar abarcan todo el contenido. Con lo cual  ahora si otro módulo intenta modificarlas no sé qué pasará (según ha comentado él, parece que no se aplicarían las modificaciones del nuevo módulo,  mal asunto). Y, por otra parte, si se actualiza la versión de Prestashop y se introducen cambios en esas plantillas, en mi caso seguiría operando con versiones desactualizadas,  lo cual es un segundo mal asunto, aunque esto ya pasaba también con el override tradicional.

Por otro lado, en mi caso si se desactiva el módulo sí que desaparece la columna personalizada, por lo que creía que se dejaba de ejecutar el override de las plantillas. Sin embargo, a raíz de lo comentado por Juanjomg he hecho la prueba y he visto que no es así, lo que ocurre en mi caso es que al haber hecho las modificaciones introduciendo hooks personalizados, los que se dejan de ejecutar son los métodos del módulo anclados a los hooks, pero las plantillas que se siguen usando son las del módulo, a pesar de que éste esté desactivado (esto es una chapuza muuuuu gorda).

En resumen: el sistema de overrides de las plantillas de twig, tal como se ha implementado, es bastante ilógico y una chapuza bastante importante. En primer lugar hay que replicar los archivos de las plantillas dentro de la estructura de un módulo para poder modificarlas, en lugar de tener una ubicación única para hacerlo (esto resulta bastante ilógico), el que se usen o no las plantillas modificadas depende de que no haya otro módulo anterior que ya contenga sus propias copias (esto ya es chapucero), y finalmente al desactivar el módulo no se desactivan las vistas personalizadas que pueda contener (esto directamente es un horror).

Es decir, que o bien lo estamos haciendo mal y hay otra forma de hacer las cosas más lógica (creo que no, porque en la documentación oficial hablan de hacerlo como nosotros), o la implementación del sistema de override de las plantillas de twig es directamente una chapuza impresionantes que va a ocasionar más de uno y más de dos quebraderos de cabeza a los desarrolladores.

Prestafan33

Prestafan33

Muchas gracias, por los aportes, Juanjomg.

Cuento mi experiencia, por si sirve de ayuda: En mi caso me pidieron que añadiera una columna al panel de administración de productos donde apareciera el precio con descuento y con impuestos incluidos (en el panel de Prestashop aparece por defecto el precio con y sin impuestos, pero nada más).

Lo que hice fue copiar en un módulo creado para la ocasión las plantillas twig ubicadas en /src/Prestashopbundle/Resource/views/Admin/Product/CatalogPage/Lists/list.html.twig y product_table.html.twig.

A continuación introduje unos hooks personalizados, en donde quería que apareciera mi columna, una para mostrar la cabecera, otra para meter un select de filtrado y otra para mostrar los valores. Usando esos hooks cargué unas plantillas de vistas con el contenido para cada una de esas secciones.

Finalmente, usé el hook "actionAdminProductsListingFieldsModifier" para hacer las modificaciones pertinentes en las consultas para obtener de la base de datos los campos que necesitaba. Como los descuentos no se almacenan tal cual en la base de datos, sino que dependen de fechas, porcentajes, valores e impuestos, lo que hice fue añadir esos campos en la consulta y luego operar con ellos para calcular en cada caso el precio con descuento. Aunque eso en el caso de las plantillas da igual.

El caso es que funcionar, funciona correctamente. Pero claro, como bien ha dicho @Juanjomg, para poder meter los hooks personalizados dentro de esas dos vistas he tenido que copiarlas completas, tal cual están, dentro de mi módulo, ya que los bloques que necesito modificar abarcan todo el contenido. Con lo cual  ahora si otro módulo intenta modificarlas no sé qué pasará (según ha comentado él, parece que no se aplicarían las modificaciones del nuevo módulo,  mal asunto). Y, por otra parte, si se actualiza la versión de Prestashop y se introducen cambios en esas plantillas, en mi caso seguiría operando con versiones desactualizadas,  lo cual es un segundo mal asunto, aunque esto ya pasaba también con el override tradicional.

Por otro lado, en mi caso si se desactiva el módulo sí que desaparece la columna personalizada, por lo que creía que se dejaba de ejecutar el override de las plantillas. Sin embargo, a raíz de lo comentado por Juanjomg he hecho la prueba y he visto que no es así, lo que ocurre en mi caso es que al haber hecho las modificaciones introduciendo hooks personalizados, los que se dejan de ejecutar son los métodos anclados a los hooks, pero las plantillas que se siguen usando son las del módulo, a pesar de que éste esté desactivado (esto es una chapuza muuuuu gorda).

En resumen: el sistema de overrides de las plantillas de twig, tal como se ha implementado, es bastante ilógico y una chapuza bastante importante. En primer lugar hay que replicar los archivos de las plantillas dentro de la estructura de un módulo para poder modificarlas, en lugar de tener una ubicación única para hacerlo (esto resulta bastante ilógico), el que se usen o no las plantillas modificadas depende de que no haya otro módulo anterior que ya contenga sus propias copias (esto ya es chapucero), y finalmente al desactivar el módulo no se desactivan las vistas personalizadas que pueda contener (esto directamente es un horror).

Es decir, que o bien lo estamos haciendo mal y hay otra forma de hacer las cosas más lógica (creo que no, porque en la documentación oficial hablan de hacerlo como nosotros), o la implementación del sistema de override de las plantillas de twig es directamente una chapuza impresionantes que va a ocasionar más de uno y más de dos quebraderos de cabeza a los desarrolladores.

Prestafan33

Prestafan33

Muchas gracias, por los aportes, Juanjomg.

Cuento mi experiencia, por si sirve de ayuda: En mi caso me pidieron que añadiera una columna al panel de administración de productos donde apareciera el precio con descuento y con impuestos incluidos (en el panel de Prestashop aparece por defecto el precio con y sin impuestos, pero nada más).

Lo que hice fue copiar en un módulo creado para la ocasión las plantillas twig ubicadas en /src/Prestashopbundle/Resource/views/Admin/Product/CatalogPage/Lists/list.html.twig y product_table.html.twig.

A continuación introduje unos hooks personalizados, en donde quería que apareciera mi columna, una para mostrar la cabecera, otra para meter un select de filtrado y otra para mostrar los valores. Usando esos hooks cargué unas plantillas de vistas con el contenido para cada una de esas secciones.

Finalmente, usé el hook "actionAdminProductsListingFieldsModifier" para hacer las modificaciones pertinentes en las consultas para obtener de la base de datos los campos que necesitaba. Como los descuentos no se almacenan tal cual en la base de datos, sino que dependen de fechas, porcentajes, valores e impuestos, lo que hice fue añadir esos campos en la consulta y luego operar con ellos para calcular en cada caso el precio con descuento. Aunque eso en el caso de las plantillas da igual.

El caso es que funcionar, funciona correctamente. Pero claro, como bien ha dicho @Juanjomg, para poder meter los hooks personalizados dentro de esas dos vistas he tenido que copiarlas completas, tal cual están, dentro de mi módulo, ya que los bloques que necesito modificar abarcan todo el contenido. Con lo cual  ahora si otro módulo intenta modificarlas no sé qué pasará (según ha comentado él, parece que no se aplicarían las modificaciones del nuevo módulo,  mal asunto). Y, por otra parte, si se actualiza la versión de Prestashop y se introducen cambios en esas plantillas, en mi caso seguiría operando con versiones desactualizadas,  lo cual es un segundo mal asunto, aunque esto ya pasaba también con el override tradicional.

Por otro lado, en mi caso si se desactiva el módulo sí que desaparece la columna personalizada, por lo que creía que se dejaba de ejecutar el override de las plantillas. Sin embargo, a raíz de lo comentado por Juanjomg he hecho la prueba y he visto que no es así, lo que ocurre en mi caso es que al haber hecho las modificaciones introduciendo hooks personalizados, los que se dejan de ejecutar son los hooks, pero las plantillas que se siguen usando son las del módulo, a pesar de que éste esté desactivado (esto es una chapuza muuuuu gorda).

En resumen: el sistema de overrides de las plantillas de twig, tal como se ha implementado, es bastante ilógico y una chapuza bastante importante. En primer lugar hay que replicar los archivos de las plantillas dentro de la estructura de un módulo para poder modificarlas, en lugar de tener una ubicación única para hacerlo (esto resulta bastante ilógico), el que se usen o no las plantillas modificadas depende de que no haya otro módulo anterior que ya contenga sus propias copias (esto ya es chapucero), y finalmente al desactivar el módulo no se desactivan las vistas personalizadas que pueda contener (esto directamente es un horror).

Es decir, que o bien lo estamos haciendo mal y hay otra forma de hacer las cosas más lógica (creo que no, porque en la documentación oficial hablan de hacerlo como nosotros), o la implementación del sistema de override de las plantillas de twig es directamente una chapuza impresionantes que va a ocasionar más de uno y más de dos quebraderos de cabeza a los desarrolladores.

×
×
  • Create New...