Este libro, sinceramente me ha encantado, no era exactamente lo que me esperaba pero me hizo conocer a Alan Storm y ha merecido la pena totalmente.
Opinión general
Ofrece una visión mucho más técnica de lo que uno se espera de entrada, y profundiza en algunos aspectos bastante dando además una visión amplia al entender las bases, cosa que es de agradecer. Lo mejor es la forma de explicar las cosas, pero esto ya es algo (por lo que he podido ver en su web) de Alan Storm.
En 4 líneas y con 1 ejemplo te hace entender cómo NO se debe hacer algo, el motivo de que Magento lo haga así, y una pequeña crítica de cómo se podría haber montado mejor. Muy muy recomendable.
Puntos a destacar
- Como he dicho ya, el autor. Tiene una forma de explicar que ayuda mucho a entender el motivo de que existan las clases que existen y de que por ejemplo en Magento se «maquete» con los layouts xml.
- Trae un módulo montado para que los instales y vayas trasteando según te va indicando. Y lo más importante, no contienen errores y lo que dice que está en X directorio o X línea está allí realmente.
- Da una visión de programador/desarrollador a todo, incluso de las partes que podrían simplemente decirse «te saca un bloque de texto», te explica qué clase es instanciada y qué parte de Magento gestiona esto (cosa que al montar un módulo, viene muy bien).
- Se entienden las bases de lo que explica. Muchas veces explica con pseudocódigo lo que está montando, de forma que no te pierdes en la implementación y te centras en el código en sí.
- Se centra bastante en un tema. Se centra en los layouts (como da a entender por el título) y da una pequeña visión de Knockout y JavaScript en Magento 2.
- Va recogiendo los ejemplos primeros, y los va completando cada vez más. Con lo que aprendes progresivamente y entiendes de alguna forma el proceso que harías en realidad a la hora de montarlo por tu cuenta. Permitiéndote pararte en el punto de complejidad que necesites.
- Como tema secundario, explica bastante bien las entrañas del sistema LESS montado en Magento 2. De forma que puedes entenderlo y tomar decisiones a la hora de montar un proyecto en lugar de seguir una receta «porque sí».
- Mientras vas leyendo, te hace pensar. Por ejemplo: en lugar de explicar que Magento 2 no tiene una plantilla 1column.phtml sino que lo gestiona todo con bloques inyectados en root.phtml y quedarse ahí, te va llevando poco a poco con ejemplos donde falla algo y al ver el error, entiendes muchas más cosas. De forma que cuando llegas al paso final con la explicación, has podido hacer el proceso de descubrirlo por ti mismo pero guiado. Eso está genial.
De qué trata cada capítulo?
- Cap 1: introducción.
- Cap 2: en lugar de explicar los layouts xml directamente, monta con PHP las cosas básicas que se hacen con los xml. Para ver los beneficios de hacerlo con xmls y recorrer algunas clases básicas en los layouts.
- Cap 3: amplía los ejemplos anteriores, pero ahora traslada a xml. Partiendo de xml en línea, a xml en un fichero propiamente dicho.
- Cap 4: explica el concepto de Layout Handle y cómo usarlos
- Cap 5: los Page Layouts. Mediante un ejemplo de obtener una estructura lo más limpia posible (quitar todos el html que no queremos) explica los layouts por defecto que existen, por qué no podemos obtener un html completamente blanco sin romper Magento, la estructura de bloques básicas de una página en Magento 2 y las operaciones básicas.
- Cap 6: operaciones básicas para un theme de Magento 2 basándose en lo que ha explicado hasta ahora.
- Cap 7: las tripas del sistema de layouts xml a nivel de ingeniería de Magento 2. A mí me ha sobrado y sinceramente no me enteré de mucho (lo pasé por encima), pero es altamente técnico y si quieres entender el funcionamiento por dentro de las cosas va muy bien. Ya te avisa antes de empezar el capítulo, que te lo puedes saltar.
- Cap 8: explica más en profundidad el funcionamiento del sistema montado para LESS y qué ha modificado Magento 2 para sus necesidades.
- Cap 9: Lo mismo que el cap 8 pero con JS y el uso de RequireJS.
- Cap 10: detalles de cómo carga Magento 2 los assets, el tema de las urls con el root directory, generaciónd de archivos en pub/static… varios detalles del funcionamiento a nivel frontend.
- Cap 11: ejemplo de cómo crear un viewmodel propio para KnockoutJS en Magento 2