Ricerca…


Osservazioni

I moduli esistono da estendere. Non è possibile modificare the app/code/ file senza proibire aggiornamenti futuri. Invece, aggiungiamo un modulo app/code/local directory (la directory locale potrebbe mancare, in tal caso, deve essere creata manualmente. Questo è comune nelle versioni successive di Magento) per aggiungere funzionalità locali personalizzate.

Tutti i file di configurazione del modulo iniziano con un tag <config> . Il nuovo modulo è dichiarato all'interno del tag <modules> . Chiameremo un modulo chiamato YOUR_COMPANY_HelloWorld, quindi vengono utilizzati i tag <YOUR_COMPANY_HelloWorld> . Qui definiamo la versione (molto prima = 0.0.1)

Un elenco di eventi XML può essere trovato su: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/module_config.xml

Se hai problemi, dai un'occhiata a: http://coding.smashingmagazine.com/2012/11/30/introducing-magento-layout/

Creazione di un modulo da zero (Hello World)

Lo sviluppo di moduli personalizzati Magento è una parte fondamentale di qualsiasi sviluppo Magento o progetto Magento, perché in qualsiasi fase potresti voler integrare la tua funzionalità / modulo nel tuo progetto Magento esistente.

La prima cosa che gli sviluppatori dovrebbero disabilitare è la cache di sistema. In caso contrario lo sviluppo diventerà un dolore poiché qualsiasi cambiamento richiederà un lavaggio. Dal pannello di amministrazione di Magento: vai su System > Cache Management > Select All > Actions : Disable. Utilizzare la seguente guida per creare un nuovo modulo:

  • Crea una cartella in app/code/local/ - le convenzioni di denominazione di solito prendono il nome della tua azienda, ad esempio app/code/local/<YOUR_COMPANY> .

  • Ora abbiamo una posizione personalizzata per i nostri moduli. Crea un'altra directory, chiamala qualcosa relativa al tipo di modulo che vuoi creare, ad esempio app / code / local / <TUA_COMPANY> / HelloWorld / - "HelloWorld" è ciò che chiamerò questo modulo.

  • Questa directory ha bisogno di un config.xml quindi Magento lo riconosce come un nuovo modulo. Crea un'altra cartella denominata etc . Seguito da un file xml chiamato config.xml. La directory dovrebbe apparire come app/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml Questa è la struttura del file xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <config>
       <modules>
          <YOUR_COMPANY_HelloWorld>
             <version>0.0.1</version>
          </YOUR_COMPANY_HelloWorld>
       </modules>
    </config>
    
  • Successivamente, i moduli devono essere dichiarati a Magento. Procedi con l' app/etc/modules . Crea un altro documento XML e YOUR_COMPANY_HelloWorld nomi scelti dei tuoi tag: YOUR_COMPANY_HelloWorld nel mio caso. In questo documento scrivi:

    <?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>
    
  • Di nuovo i tag config e module sono usati per dichiarare un nuovo modulo a Magento. Attivo è il valore predefinito a cui è possibile accedere nel Admin Panel under System > Configuration > Advanced . codePool dice a Magento quale directory cercare. local nel nostro caso

  • Questo modulo è stato ora impostato, quindi il modello della nostra struttura MVC. dovresti essere in grado di vedere il tuo nuovo modulo nel Pannello di amministrazione in System > Configuration > Advanced . Tuttavia, non fa ancora niente! Dovrai tornare al nostro file config.xml e definire gli elementi XML.

  • Seguendo il tutorial; Useremo alcuni di questi Elementi XML per creare classi e manipolare tutte le pagine nel frontend del nostro sito. Torna al file config.xml scrivi quanto segue sotto il </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>
    
  • Come puoi vedere, stiamo estendendo costantemente anziché manipolare i file principali. Il tag helloworld è in minuscolo perché indicherà un handle e per la continuità lo helloworld più vicino possibile. Quindi colleghiamo questo al modulo YOUR_COMPANY_HelloWorld .

  • Stiamo cambiando il layout. Pertanto, dobbiamo creare questa maniglia nella directory di layout. procedere ad app/design/frontend/base/default/layout . Abbiamo detto al modulo di cercare il file helloworld.xml . Pertanto dobbiamo crearlo in questa directory. Che cosa state aspettando. Fallo!! e popolarlo 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>
    
  • Ora, quelli di voi che hanno una piccola esperienza su Magento, o che hanno letto altri tutorial Magento degni di nota, potrebbero essere senza fiato sul fatto che stiamo apportando delle modifiche in base / default dato che qui si trovano i file principali di Magento. Tuttavia, non stiamo modificando alcun file qui, ne stiamo creando di nuovi, e inoltre stiamo prefiggendo il nostro nome di file con "helloworld", quindi ci sono pochissime possibilità che questo sia in conflitto con altri moduli o che causi problemi con l'aggiornamento di Magento nel futuro. Giorni felici!

  • Poiché vogliamo influenzare tutte le pagine, utilizziamo il tag predefinito e lo riferimento al blocco strutturale before_body_end . Questo agirà nel ruolo dell'Action e attiverà la sezione View della nostra struttura MVC.

  • Ora capiamo che ci stiamo imbullonando sul blocco before_body_end . e collegandolo al nostro blocco personalizzato. Questo è chiamato un riferimento ed è un gancio . Al momento non lo stiamo collegando a nulla esistente, quindi dobbiamo creare i file necessari.

  • In helloworld.xml abbiamo indicato nel template un footer.phtml . Procedere ad app/design/frontend/base/default/template e creare una directory helloworld .

  • All'interno di questa directory crea il file footer.phtml e footer.phtml HTML, questo tutorial lo scrive semplicemente per mostrare alcune funzionalità PHP collegate al nostro file PHTML:

    <p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>
    
  • Ora dobbiamo creare il nostro oggetto di blocco per accoppiare il modello con la nostra funzionalità di blocco. Crea l'app di directory / code / local / YOUR_COMPANY / HelloWorld / Block / e crea il file Footer.php all'interno di questo. Questo è stato fatto riferimento nel nostro zeta_layout.xml nel tipo "helloworld / footer". Compila questo file con:

    <?php
    class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template {
       public function getDate() {
          $date = date('Y-m-d');
          return urlencode($date);
       }
    }
    ?>
    
  • Questa è la funzionalità che popolerà la nostra chiamata getDate() abbiamo chiamato dal nostro file .phtml . Estendiamo il Mage_Core_Block_Template .

  • Questa funzionalità è ora completa. Prova questo fuori andando alla tua home page dove dovresti vedere il tuo modulo nel piè di pagina di ogni pagina!



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow