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 llamada etc Seguido de un archivo xml llamado config.xml. El directorio debería verse como app/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 y YOUR_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 caso

  • Este 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. Luego YOUR_COMPANY_HelloWorld esto con el módulo YOUR_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 archivo helloworld.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 estructural before_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 un footer.phtml . Continúe con app/design/frontend/base/default/template y cree un directorio helloworld .

  • 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 llamada getDate() que llamamos desde nuestro archivo .phtml . Extendemos el Mage_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!



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow