Categorie
CMS Magento

Primi passi per creare un modulo custom per Magento 1.6

Magento è uno strumento potente per creare siti e-commerce e offre molte funzionalità già nella sua versione base, o con l’aggiunta di moduli gratuiti. Tuttavia presto o tardi si presenterà l’esigenza di andare ad implementare un modulo custom, per rispondere a richieste specifiche del cliente, dovute al contesto di applicazione o a esigenze particolari.

Vediamo allora quali sono i primi passi per costruire un modulo custom. Partiremo da zero ed andremo a costruire un tipico esempio “Hello World”.

1) Creare la struttura di cartelle del nostro modulo

Andiamo a posizionare le risorse necessarie al nostro modulo in app/code/local; qui aggiungiamo il package “ELbuild”, all’interno del quale potremo creare diversi moduli, se necessario. Creiamo quindi la cartella “HelloWorld” all’interno della quale aggiungiamo le cartelle:

  • Block
  • controllers
  • etc

La struttura delle cartelle dovrà assomigliare quindi a quella che vediamo in figura.

2) Informare il framework dell’esistenza del modulo

Per far sì che Magento si accorga del nostro modulo e lo attivi, dobbiamo creare il file app/etc/modules/ELbuild_HelloWorld.xml e inserire al suo interno il seguente contenuto:

<?xml version="1.0"?>
<config>
    <modules>
        <ELbuild_HelloWorld>
            <active>true</active>
            <codePool>local</codePool>
        </ELbuild_HelloWorld>
    </modules>
</config>

3) Creare un file di configurazione per il modulo

Creiamo ora il file app/code/local/ELbuild/HelloWorld/etc/config.xml, dove andiamo ad inserire la configurazione del modulo.

<?xml version="1.0"?>
<config>
	<global>
		<modules>
			<ELbuild_HelloWorld>
                            <version>0.1.0</version>
                	</ELbuild_HelloWorld>
        	</modules>

		<blocks>
            		<helloworld>
                	<rewrite>
				<helloworld>ELbuild_HelloWorld_Block_HelloWorld</helloworld>
			</rewrite>
            		</helloworld>
		</blocks>
	</global>

	<frontend>
                <routers>
                        <helloworld>
                                <use>standard</use>
                                <args>
                                        <module>ELbuild_HelloWorld</module>
                                        <frontName>helloworld</frontName>
                                </args>
                        </helloworld>
                </routers>
		<layout>
			<updates>
				<helloworld>
					<file>helloworld.xml</file>
				</helloworld>
			</updates>
		</layout>
        </frontend>
</config>

Nella prima porzione del file dichiariamo il modulo e la versione; nel blocco blocks dichiariamo un blocco. Nell’implementazione dell MVC di Magento, la vista è composta da blocchi (.php) e template (.phtml): ad ogni blocco corrisponde un template; i template possono invocare funzioni definite nel blocco, che a loro volta possono invocare direttamente funzioni del model.

Nella seconda parte del file informiamo Magento di invocare il nostro modulo in corrispondenza del frontname “helloworld” e di usare il layout definito nel file helloworld.xml.

4) Creare le classi necessarie

Creiamo una classe controller nel file app/code/local/ELbuild/HelloWorld/controllers/IndexController.php.

<?php
class ELbuild_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action
{
	public function indexAction()
	{
		$this->loadLayout(array('default'));
		$this->renderLayout();
	}
}
?>

Creiamo poi una classe block nel file app/code/local/Elbuild/HelloWorld/Block/HelloWorld.php.

<?php
class ELbuild_HelloWorld_Block_HelloWorld extends Mage_Core_Block_Template
{
//metodi che implementano funzionalità' necessarie per il modulo
}
?>

5) Definire il layout e il template

A questo punto possiamo creare il file che definisce il layout: lo andiamo a posizionare in app/design/frontend/default/default/layout/helloworld.xml.

<?xml version="1.0"?>
<layout version="0.1.0">
	<helloworld_index_index>
		<reference name="root">
			<action method="setTemplate"><template>page/1column.phtml</template></action>
       	 	</reference>

		<reference name="content">
        	    	<block type="helloworld/helloworld" name="hello" template="helloworld/helloworld.phtml"/>
        	</reference>
	</helloworld_index_index>
</layout>

Notiamo che abbiamo detto a Magento di utilizzare il template helloworld/helloworld.phtml; andiamo quindi a creare questo file (e la relativa cartella) nella directory app/design/frontend/default/default/template. Al suo interno scriviamo un semplice echo per visualizzare un messaggio.

<?php
echo 'Ciao sono un modulo di prova di ELbuild';
?>

Andiamo a visitare <nostrosito>/index.php/helloworld/: possiamo vedere il risultato del nostro lavoro!

Riferimenti:

http://magento4u.wordpress.com/2009/06/08/create-new-module-helloworld-in-magento/

 

 

 

 

Di Evelina Agostini

Evelina Agostini si è laureata con lode in Ingegneria Informatica presso l'Università degli Studi di Firenze e può vantare un'esperienza decennale nello sviluppo di soluzioni web. Dotata di competenze trasversali a tutto lo stack, conosce in maniera approfondita la piattaforma Java EE ed in generale le tecnologie server side sia Java che PHP, ed è in grado di progettare e realizzare database scalabili utilizzando sia MySQL che Oracle. Evelina possiede inoltre competenze su Javascript e jQuery e skill internazionalmente riconosciuti per quanto riguarda il framework AngularJS ed in generale le soluzioni Javascript MVC. Evelina, grazie alle sue doti creative, si occupa anche del design di alcune delle interfacce dei sistemi sviluppati da ELbuild.

6 risposte su “Primi passi per creare un modulo custom per Magento 1.6”

Ho seguito il tutorial, ma nel momento in cui ho tentato di vedere il risultato del mio operato ho ottenuto il seguente errore … Whoops, our bad… errore 404 …
Ho ricontrollato tutto, ma non vedo errori … potrebbe darmi qualche indicazione ?
Grazie mille

Ti consiglio di ricontrollare l’esatta corrispondenza dei nomi che hai dato al package e al modulo con quello che hai scritto nei file di configurazione. In particolare, se viene mostrato un errore 404, questo significa che non viene trovata nessuna risorsa collegata a quel percorso: allora ci potrebbe essere un errore nella sezione del file config.xml che definisce il mapping tra il path “helloworld” e il nome del tuo modulo (sezione “routers”).

Anche a me dice la stessa cosa potrebbe essere un problema del fatto che io sto lavorando in locale ??? Non penso sia così però ho notato che la cartella ‘local’ situata in app/code/ io non l’avevo quindi ho dovuto crearla…Cmq tutto uguale

no niente neanche su versione 1.6 …
PS: a quanto pare questo template lo hai solo tu ^_^ io non l’ho trovato nè in locale (vers. 1.7.0.2) nè su web (vers. 1.6) …

Ciao Evelina,
ottima guida la tua per iniziare a sviluppare con magento.
Io ho seguito il tutorial e va tt bene, adesso volevo chiederti se per caso sapevi come poter ottenere più frontend per uno stesso modulo, senza dover creare il tutto ogni volta che si aggiunge una pagina web nuova.
in pratica ti sto chiedendo se si può fare qualcosa del genere:

standard

ELbuild_HelloWorld
helloworld

standard

ELbuild_HelloWorld
helloworld_mio

helloworld.xml

helloworld_mio.xml

In pratica utilizzare tutto quello che fa parte del modulo ELbuild_HelloWorld, in più avere un nuovo frontend con frontname “helloworld_mio”, che punti ad un nuovo file “helloworld_mio.xml” che a sua volta richiami un nuovo template.
Ti ringrazio anticipatamente.
Ciao.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *