magento
Estructura del módulo
Buscar..
Observaciones
Los módulos existen para ser extendidos. No puede cambiar the app/code/
archivos sin prohibir futuras actualizaciones. En su lugar, agregamos un módulo a la app/code/local
directorio app/code/local
(puede que falte el directorio local, si es así, debe crearse manualmente. Esto es común en las versiones posteriores de Magento) para agregar funcionalidad local personalizada.
Todos los archivos de configuración del módulo comienzan con una etiqueta <config>
. El nuevo módulo se declara dentro de la etiqueta <modules>
. Llamaremos a un módulo llamado YOUR_COMPANY_HelloWorld, por lo tanto, se utilizan las etiquetas <YOUR_COMPANY_HelloWorld>
. Aquí definimos la versión (primera = 0.0.1)
Puede encontrar una lista de eventos XML en: http://www.magentocommerce.com/wiki/5___modules_and_development/reference/module_config.xml
Si tiene algún problema, consulte: http://coding.smashingmagazine.com/2012/11/30/introducing-magento-layout/
Creando un módulo desde cero (Hello World)
El desarrollo de módulos personalizados de Magento es una parte fundamental de cualquier proyecto de Magento o de desarrollo de Magento, ya que en cualquier etapa es posible que desee integrar su propia funcionalidad / módulo en su proyecto Magento existente.
Lo primero que deben deshabilitar los desarrolladores es el caché del sistema. De lo contrario, el desarrollo se convertirá en un dolor, ya que cualquier cambio requerirá un lavado. Desde el panel de administración de magento: navegue a System > Cache Management > Select All > Actions : Disable.
Utilice la siguiente guía para crear un nuevo módulo:
Cree una carpeta en la convención de nomenclatura de
app/code/local/
- usualmente tome el nombre de su empresa, por ejemplo,app/code/local/<YOUR_COMPANY>
.Ahora tenemos una ubicación personalizada para nuestros módulos. Cree otro directorio, llámelo como algo relacionado con el tipo de módulo que desea crear, por ejemplo, app / code / local / <YOUR_COMPANY> / HelloWorld / - "HelloWorld" es lo que llamaré este módulo.
Este directorio necesita un
config.xml
para que Magento lo reconozca como un nuevo módulo. Crea otra carpeta llamadaetc
Seguido de un archivo xml llamado config.xml. El directorio debería verse comoapp/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml
Esta es la estructura del archivo xml:<?xml version="1.0" encoding="UTF-8" ?> <config> <modules> <YOUR_COMPANY_HelloWorld> <version>0.0.1</version> </YOUR_COMPANY_HelloWorld> </modules> </config>
A continuación, los módulos deben ser declarados a Magento. Continuar con la
app/etc/modules
. Cree otro documento XML yYOUR_COMPANY_HelloWorld
nombres elegidos de sus etiquetas:YOUR_COMPANY_HelloWorld
en mi caso. En este documento escriba:<?xml version="1.0" encoding="UTF-8"?> <config> <modules> <YOUR_COMPANY_HelloWorld> <!-- Whether our module is active: true or false --> <active>true</active> <!-- Which code pool to use: core, community or local --> <codePool>local</codePool> </YOUR_COMPANY_HelloWorld> </modules> </config>
Una vez más, las etiquetas de configuración y módulo se utilizan para declarar un nuevo módulo a Magento. Activo es el valor predeterminado al que se puede acceder en el
Admin Panel under System > Configuration > Advanced
.codePool
le dice a Magento en qué directorio buscar.local
en nuestro casoEste módulo ya se ha configurado, por lo tanto, el modelo de nuestra estructura MVC. Debería poder ver su nuevo módulo en el Panel de administración en
System > Configuration > Advanced
. Sin embargo, todavía no hace nada! Deberá volver a nuestro archivo config.xml y definir los elementos XML.Siguiendo con el tutorial; Utilizaremos algunos de estos elementos XML para crear clases y manipular todas las páginas en la parte frontal de nuestro sitio. Para volver al archivo
config.xml
, escriba lo siguiente en la etiqueta</modules>
:<global> <!-- adding a new block definition --> <blocks> <!-- A unique short name for our block files --> <helloworld> <!-- the location of our modules block --> <class>YOUR_COMPANY_HelloWorld_Block</class> </helloworld> </blocks> </global> <!-- We are making changes to the frontend --> <frontend> <!-- We are making changes to the layout of the front end --> <layout> <!-- we are adding a new update file --> <updates> <!-- Creating the name of our update and linking it the module --> <helloworld module="YOUR_COMPANY_HelloWorld"> <!-- The name of the layout file we are adding --> <file>helloworld.xml</file> </helloworld> </updates> </layout> </frontend>
Como puede ver, estamos extendiendo constantemente en lugar de manipular archivos principales. La etiqueta
helloworld
está en minúscula porque apuntará a un Handle, y para la continuidad la nombraremos lo más cerca posible. LuegoYOUR_COMPANY_HelloWorld
esto con el móduloYOUR_COMPANY_HelloWorld
.Estamos cambiando el diseño. Por lo tanto, necesitamos crear este Handle en el directorio de diseño. proceder a
app/design/frontend/base/default/layout
. Le dijimos al módulo que buscara el archivohelloworld.xml
. Por eso debemos crearlo en este directorio. Que estas esperando. ¡¡Hazlo!! y poblarlo con:<?xml version="1.0" encoding="UTF-8"?> <!-- All Layout files begin with this code --> <layout> <!-- this is the layout handle. Default is handled on all pages. We want this module to execute on all pages --> <default> <!-- This is the block we want to bolt onto the existing before_body_end block --> <reference name="before_body_end"> <!-- We define our new block and template to be added to before_body_end --> <block name="helloworld_footer" template="helloworld/footer.phtml" type="helloworld/footer"/> </reference> </default> </layout>
Ahora, aquellos de ustedes que tengan una pequeña experiencia con Magento, o que hayan leído algunos tutoriales más notables de Magento, pueden estar quedándose boquiabiertos ante el hecho de que estamos realizando cambios en base / predeterminado ya que aquí es donde se encuentran los archivos principales de Magento. Sin embargo, no estamos modificando ningún archivo aquí, estamos creando nuevos y, además, estamos prefijando nuestro nombre de archivo con "helloworld", por lo que hay muy pocas posibilidades de que esto entre en conflicto con otros módulos o cause problemas con la actualización de Magento en el futuro. ¡Días felices!
Como queremos afectar a todas las páginas, usamos la etiqueta predeterminada y la referenciamos al
before_body_end
estructuralbefore_body_end
. Esto actuará el papel de la Acción y activará la sección Ver de nuestra estructura MVC.Ahora entendemos que nos estamos atornillando al bloque
before_body_end
. y vinculándolo a nuestro bloque personalizado. Esto se llama una referencia y es un gancho . Actualmente no lo estamos conectando a nada existente, por lo tanto, debemos crear los archivos necesarios.En
helloworld.xml
indicamos en la plantilla unfooter.phtml
. Continúe conapp/design/frontend/base/default/template
y cree un directoriohelloworld
.Dentro de este directorio, cree el archivo
footer.phtml
y rellénelo con HTML, este tutorial simplemente lo escribe para mostrar algunas funciones de PHP vinculadas con nuestro archivo PHTML:<p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>
Ahora necesitamos crear nuestro propio objeto de bloque para unir la plantilla con nuestra funcionalidad de bloque. Cree el directorio app / code / local / YOUR_COMPANY / HelloWorld / Block / y cree el archivo
Footer.php
dentro de este. Esto fue referenciado en nuestro zeta_layout.xml en el tipo "helloworld / footer". Rellene este archivo con:<?php class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template { public function getDate() { $date = date('Y-m-d'); return urlencode($date); } } ?>
Esta es la funcionalidad que
getDate()
nuestra llamadagetDate()
que llamamos desde nuestro archivo.phtml
. Extendemos elMage_Core_Block_Template
.Esta funcionalidad ahora está completa. ¡Prueba esto yendo a tu página de inicio donde deberías ver tu módulo en el pie de página de cada página!