Siempre es una característica importante para cualquier marco que admita la capacidad de ampliación y la escalabilidad en el núcleo mismo. Es tan cierto para Magento, que permite a los programadores crear extensiones personalizadas para cumplir con los requisitos personalizados, lo que proporciona capacidad de extensión. Por otro lado, también le permite anular los archivos principales para alterar el flujo y el comportamiento de las características principales de Magento.
Hay diferentes formas en Magento que le permiten anular los archivos principales. Una de ellas es la implementación del patrón Event Observer. Usando ese método, definirá observadores en su módulo para los eventos deseados, y serán recogidos cuando los eventos asociados se generen en Magento. Sin duda, es una forma potente y estándar de conectar sus cambios a los módulos centrales de Magento. Habiendo dicho eso, hay situaciones en las que sentirás que sería genial si pudieras simplemente reemplazar los fragmentos de archivos del núcleo por los tuyos. Puede hacerlo usando un archivo de configuración XML en su módulo personalizado.
En Magento, los bloques son componentes de construcción primitivos para cualquier diseño en el extremo delantero. Aunque puede anular el archivo de plantilla de cualquier bloque utilizando un tema personalizado para cambiar la salida visual, a veces le gustaría modificar la lógica del código de bloque principal. En ese caso, reemplazar un bloque central con el archivo de bloque de su módulo personalizado realmente ayuda a conectar sus cambios fácilmente.
En este tutorial, crearemos un módulo personalizado para comprender cómo funciona la anulación de bloque en Magento. En el módulo personalizado, anularemos un bloque de listado de productos que se muestra en la vista de página de categoría. La anulación de trabajos configura ciertas etiquetas XML según las convenciones de Magento.
Supongo que está familiarizado con el proceso básico de creación de módulos en Magento. Aquí hay un buen artículo que explica los conceptos básicos de la creación de módulos personalizados, ¡en caso de que quiera echarle un vistazo! Saltemos de inmediato al contenido de este tutorial.!
Crearemos un módulo personalizado simple llamado "Catálogo", que configura la anulación del bloque de listado de productos principales (aplicación / código / núcleo / Mage / Catálogo / Bloque / Categoría / Vista.php) en la vista de la página de categoría. Aquí hay una lista de los archivos necesarios para la configuración deseada:
Primero, necesitamos crear un archivo habilitador de módulos. Cree un archivo "app / etc / modules / Envato_All.xml" y pegue el siguiente contenido en ese archivo. Hemos utilizado Envato
como nuestro espacio de nombres de módulo y Catalogar
como nuestro nombre de módulo. Habilitará nuestro módulo de catálogo por defecto..
cierto local
A continuación, necesitamos crear un archivo de configuración del módulo. Cree "app / code / local / Envato / Catalog / etc / config.xml" y pegue el siguiente contenido en ese archivo.
1.0 Envato_Catalog_Block_Category_View
Al comienzo del módulo, hemos configurado el número de versión del módulo usando el
etiqueta. Después de eso, el
y
las etiquetas se utilizan para informar al sistema de anulación de Magento que vamos a anular uno de los "bloques" del módulo principal "Catálogo".
Además, el
La etiqueta se utiliza para definir una identidad de bloque que será anulada por la Envato_Catalog_Block_Category_View
clase. Se asigna a un archivo de bloque "Category / View.php" en el directorio "Block" del módulo de catálogo. Lo importante a tener en cuenta aquí es que estamos siguiendo una estructura de directorios similar al módulo central. Aunque eso no es estrictamente necesario, se prefiere sobre la estructura de directorios diferente para mantener la legibilidad.
Finalmente, lo único que queda es definir una clase de bloque. Envato_Catalog_Block_Category_View
. Vamos a crear un archivo de bloque "app / code / local / Envato / Catalog / Block / Category / View.php" y llenarlo con el siguiente contenido.
getChildHtml ('product_list');
Hemos definido la Envato_Catalog_Block_Category_View
clase que extiende el núcleo Mage_Catalog_Block_Category_View
clase de bloque Por lo tanto, puede anular todos los métodos de la clase base y crear nuevos métodos si es necesario.
En el ejemplo anterior, el getProductListHtml
El método se invalida para que se llame en la vista de la página de categoría. Puede alterar el código según sus requerimientos.
Aunque es un ejemplo muy básico, tiene el propósito de anular el bloque central, y puede modificarlo para hacer las cosas más complejas y crear algo más útil.!
Hoy, en el primer artículo de esta serie, hemos aprendido a anular los bloques centrales de Magento. En la siguiente parte, se me ocurrirán más cosas emocionantes! Me encantaría escuchar sus comentarios y consultas en el feed a continuación.!