Cómo crear un módulo en Magento. Reescrituras (rewrites)
En este post vamos a explicar cómo crear reescrituras de código de Magento. Utilizaremos el módulo creado en Cómo crear un módulo en Magento. Introducción
Este post únicamente explica cómo crear reescrituras y sus reglas de nomenclatura, sin entrar en la funcionalidad reescrita
Blocks, Helpers & Models
A la hora de definir una reescritura de un Block, un Helper o un Model la metodología es la misma (la reescritura de controllers utiliza un sistema diferente, que trataremos en otro post)
Todas las reescrituras se deben definir en el fichero de configuración de nuestro módulo config.xml
Como ya hemos visto, Magento está desarrollado siguiendo una estructura modular. Cada una de las carpetas en app/code/core/Mage contiene un módulo. Cada uno de estos módulos tiene una estructura de carpetas similar a la que hemos empleado al crear nuestro módulo: Block, controllers, Helper, Model, etc…
Para definir nuestra reescritura necesitamos el nombre del módulo y el path de la clase que queremos reescribir. El path sería la ruta de carpetas, partiendo desde la carpeta raíz (Block, Helper, Model… dependiendo del tipo de clase que queramos reescribir) hasta llegar a la clase
Por ejemplo, si queremos reescribir el modelo Mage_Catalog_Model_Product_Status, clase localizada en…
app/code/core/Mage/Catalog/Model/Product/Status.php
El módulo sería Catalog y el path sería Product/Status
Otro ejemplo, si queremos reescribir el helper Mage_Customer_Helper_Address, clase localizada en…
app/code/core/Mage/Customer/Helper/Address.php
El módulo sería Customer y el path esta vez sería simplemente Address
Teniendo claros módulo y path ya podemos definir la reescritura en el fichero de configuración de nuestro módulo config.xml
VIAN_Tutorial_Model_Rewrite_Catalog_Product_Status
Siendo VIAN_Tutorial_Model_Rewrite_Catalog_Product_Status el nombre de la clase de nuestro módulo. Aquí añadimos la carpeta Rewrite/ y respetamos la ruta de carpetas original de la clase simplemente por claridad (no es obligatorio). De esta manera, a medida que el módulo vaya creciendo, nos resultará muy sencillo localizar las clases que son reescrituras y diferenciar claramente qué módulo de Magento está reescribiendo cada una de ellas. Siguiendo la lógica empleada anteriormente para obtener el path, esta clase estará ubicada en…
app/code/local/VIAN/Tutorial/Model/Rewrite/Catalog/Product/Status.php
El código XML de más arriba simplemente define la reescritura, pero no la hemos ubicado todavía en su sección correspondiente. Como el ejemplo se ha realizado sobre un Model (Mage_Catalog_Model_Product_Status), el código deberemos ubicarlo dentro del tag XML models
app/code/local/VIAN/Tutorial/etc/config.xml
VIAN_Tutorial_Model_Rewrite_Catalog_Product_Status
Esta metodología debería funcionar para la gran mayoría de clases en Magento, aunque hay algunas excepciones, como las clases definidas como abstract (no se pueden reescribir) o los Resource Models (reglas algo diferentes al definir las reescrituras)
En próximos posts de esta serie aparcaremos un poco la teoría y pasaremos a la práctica
-
[…] El módulo de este tutorial no realiza ninguna funcionalidad, este post únicamente explica cómo crear y activar un módulo, así como mostrar la ubicación y reglas de nomenclatura de sus ficheros básicos. Otros posts de la serie tratan temas más avanzados, como las reescrituras (rewrites) de código […]
Leave a Comment
gracias por tu post, ya he podido modificarlo
I just ought to tell you which you have written an exceptional and distinctive post that I really enjoyed reading. Im fascinated by how nicely you laid out your material and presented your views. Thank you. bbecbaeeekeg