Magento Moduli

Da Andreabont's Wiki.

Dichiarazione di un modulo

Ogni modulo va dichiarato attraverso un opportuno file XML posto in app/etc/modules.

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

In questo file viene definito il nome (Mage_Sintax) e la cartella dove viene installato (local). Il path completo dell'installazione viene definito aggiungendo anche una cartella chiamata con il nome del modulo (un underscore indica una sottocartella), nel nostro esempio app/code/local/Mage/Sintax/

Struttura cartelle di un modulo

Dopo la cartella (o le cartelle) del nome del modulo, troviamo una struttura standard di cartelle:

Cartella Descrizione
Block Contiene le classi che implementano parte del View
controllers Contiene le classi controller del modulo
Model Contiene le classi model del modulo
Helpers Contiene codice utile per il modulo che non rientra nelle altre tipologie
etc File di configurazione del modulo
sql Script di installazione o upgrade del database

File di configurazione config.xml

Questo file è necessario al funzionamento del modulo e descrive le classi presenti nel modulo, oltre che una serie di informazioni accessorie. Il file si trova sotto etc/.

<?xml version="1.0"?>
<config>

    <modules> <!-- In questo ramo andranno tutti i "metadati" del modulo, come versione, dipendenze, ecc... -->
        <Mage_Sintax>
            <active>[true|false]</active>
            <codePool>[core|community|local]</codePool>
            <depends>
                <(AnotherNameSpace_ModuleName) />
            </depends>
            <version>(version_number)</version>
        </Mage_Sintax>
    </modules>
    
    <global>

        <models>
            <!-- Qui saranno indicate le classi model -->
        </models>

        <blocks>
            <!-- Qui saranno indicate le classi di logica -->
        </blocks>

        <helpers>
            <!-- Qui saranno indicate le classi di aiuto -->
        </helpers>

        <events>
            <!-- Qui saranno associati gli eventi alle rispettive classi che li gestiranno (nel model) -->
        </events>

        <template>
            <!-- todo -->
        </template>

    </global>
    
    <admin>
        <!-- todo -->
    </admin>
    
    <adminhtml>
        <!-- todo -->
    </adminhtml>

</config>

Creare una classe Helper

Il nome della classe inizia sempre con il nome del modulo, nel nostro esempio Mage_Sintax. Creiamo quindi in app/code/local/Mage/Sintax/Helper il file Data.php con la nuova classe:

<?PHP

class Mage_Sintax_Helper_Data extends Mage_Core_Helper_Abstract {

}

Come si può notare la classe deve ereditare la classe del framework magento Mage_Core_Helper_Abstract. A questo punto possiamo andare nel file config.xml, nel ramo helpers di global e aggiungere la classe. (si deve mettere sempre in un sotto-ramo chiamato come il modulo)

    <sintax>
        <class>Mage_Sintax_Helper</class>
    </sintax>

Creare una classe Model

Il procedimento è dimile alla classe Helper. Creiamo quindi in app/code/local/Mage/Sintax/Model il file Data.php con la nuova classe:

<?PHP

class Mage_Sintax_Model_Data extends Mage_Core_Model_Abstract {

}

Anche questa eredita da una classe del framework magento, la Mage_Core_Model_Abstract. A questo punto possiamo andare nel file config.xml, nel ramo models di global e aggiungere la classe. (si deve mettere sempre in un sotto-ramo chiamato come il modulo)

    <sintax>
        <class>Mage_Sintax_Model_Data</class>
    </sintax>

Sovrascrivere una classe core

Per sovrascrivere una classe core, riproporre nel modulo lo stesso path di cartelle e gli stessi nomi dei file.