Comprender la invalidación en Magento Modelos

En esta serie, estamos explorando las funciones primordiales disponibles en el sistema de comercio electrónico de Magento. En el artículo anterior, analizamos cómo anular los archivos de bloques principales mediante un módulo personalizado. Hoy, lo extenderé y demostraré cómo puede anular los archivos del modelo principal utilizando un archivo de configuración basado en XML..

¿Por qué anular modelos??

En Magento, los modelos desempeñan un papel importante, ya que implementan la mayoría de la lógica empresarial de las funciones principales. Hay ocasiones en las que necesita cambiar el flujo o la lógica empresarial en los modelos para implementar sus funciones personalizadas. 

Es tentador seguir adelante y cambiar los archivos principales directamente, lo que parece una solución fácil y directa. Dicho esto, es una mala práctica, ya que dificulta mucho la actualización de Magento. Cuantos más archivos centrales modifique directamente, más difícil será para usted hacer un seguimiento de sus cambios y aplicarlos durante cada actualización de versión!

En este tutorial, crearemos un módulo personalizado para comprender cómo funciona la anulación de modelos en Magento. En este módulo personalizado, veremos cómo anular una clase de modelo de categoría del módulo principal "Catálogo". 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. Si no es así, aquí hay un buen artículo que explica los conceptos básicos de la creación de módulos personalizados. Saltemos directamente al curso de este tutorial!

Un vistazo a la configuración

Aquí está la lista de archivos necesarios para la configuración deseada:

  • app / etc / modules / Envato_All.xml: Es un archivo usado para habilitar nuestro módulo personalizado..
  • app / code / local / Envato / Catalog / etc / config.xml: Es un archivo de configuración del módulo en el que configuraremos la anulación de la clase modelo usando ciertas etiquetas según las convenciones de Magento.
  • app / code / local / Envato / Catalog / Model / Category.php: Es una clase de modelo de nuestro módulo personalizado que anulará la clase de modelo base.

Creación de archivos y carpetas: Módulo personalizado

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 "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_Model_Category     

Primero, hemos definido un 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 un "modelo" del módulo principal "Catálogo".

A continuación, el  La etiqueta se utiliza para definir una identidad de modelo que será anulada por el Envato_Catalog_Model_Category clase. Se asigna a un archivo de modelo "Category.php" en el directorio "Model" del módulo de catálogo. Una cosa 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, es mejor que usar una estructura de directorio diferente, ya que ayuda a mantener la legibilidad.

Finalmente, lo único que queda es definir una clase modelo. Envato_Catalog_Model_Category. Vamos a crear un archivo modelo "app / code / local / Envato / Catalog / Model / Category.php" y pegamos el siguiente contenido en ese archivo.

setStoreId ($ this-> getStoreId ()) -> addCategoryFilter ($ this); devuelve $ colección; 

Hemos definido un Envato_Catalog_Model_Category clase que extiende el núcleo Mage_Catalog_Model_Category Modelo de clase del módulo "Catálogo". 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 getProductCollection El método se reemplaza por lo que se llamará en lugar del método definido en la clase del modelo central. Puede modificar el código del modelo según sus requerimientos. 

Cuando reemplaza cualquier método en los modelos, debe asegurarse de que el tipo de datos del valor de retorno de ese método coincida con el tipo de datos del método de clase base. Dado que los métodos de modelo se llaman desde varios módulos centrales, debemos asegurarnos de que no rompa otras características!

Aunque este es un ejemplo muy básico, tiene el propósito de anular el modelo central y puede extenderlo según sus requisitos personalizados..

Conclusión

En este tutorial, aprendimos cómo anular los archivos del modelo central en Magento usando un módulo personalizado. En la siguiente y última parte de esta serie de anulación, veremos cómo anular los archivos del controlador central. No dudes en dejar tus comentarios a continuación.!