magento
Struttura del modulo
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 esempioapp/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 denominataetc
. Seguito da un file xml chiamato config.xml. La directory dovrebbe apparire comeapp/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 eYOUR_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 casoQuesto 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à lohelloworld
più vicino possibile. Quindi colleghiamo questo al moduloYOUR_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 filehelloworld.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 unfooter.phtml
. Procedere adapp/design/frontend/base/default/template
e creare una directoryhelloworld
.All'interno di questa directory crea il file
footer.phtml
efooter.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 ilMage_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!