2012-07-21 14 views
5

C'è un modo per modificare dinamicamente il layout di una pagina di Magento (diciamo una pagina di categoria di prodotto) utilizzando la variabile di sistema che è stata impostata sul nostro modulo? Voglio essere in grado di impostare il layout predefinito della mia categoria tramite il pannello di configurazione amministratore del mio modulo. In modo che non debba avere a che fare con questi confusi file di layout XML ogni volta che voglio modificare il layout predefinito per una determinata pagina di Magento.Magento cambia il layout dinamicamente tramite la variabile di sistema

So che, su un file phtml, potremmo semplicemente chiamare la variabile di sistema del nostro modulo chiamando Mage::getStoreConfig('module/scope/...') per usare quella variabile di sistema. ma cosa succede se vogliamo usare quella variabile di sistema per cambiare l'intero layout che è impostato sul file di layout XML per impostazione predefinita.

Non vedo alcun modo per richiamare il valore della variabile di sistema nel file di layout XML.

Ma sono abbastanza sicuro che ci sia un modo giusto per farlo. Finora, questo è l'indizio più vicina che ho

Magento - xml layouts, specify value for ifconfig?

Ma, ancora, non ho trovato alcuna risposta diretta per quello che voglio veramente raggiungere

questo è il contenuto del il mio config.xml

<config> 
    <modules> 
     <Prem_Spectra> 
      <version>0.1.0</version> 
     </Prem_Spectra> 
    </modules> 

    <global> 
     <models> 
      <spectra> 
       <class>Prem_Spectra_Model</class> 
      </spectra> 
     </models> 

     <helpers> 
      <prem_spectra> 
       <class>Prem_Spectra_Helper</class> 
      </prem_spectra> 
     </helpers> 

    </global> 
</config> 

risposta

10

Questo può essere ottenuto molto facilmente utilizzando layout xml e un metodo semplice nel proprio helper. Non vedo alcun requisito per un osservatore qui o per qualsiasi altra cosa eccessivamente elaborata.

Quindi, in base ai requisiti per cambiare tutti i layout categoria di pagina dal tuo moduli memorizzare il valore di configurazione si richiederà il seguente nel layout xml:

<catalog_category_view> 
    <reference name="root"> 
     <action method="setTemplate"> 
      <template helper="yourmodule/switchTemplate" />     
     </action> 
    </reference> 
</catalog_category_view> 

E quanto segue nel moduli di default aiutante:

public function switchTemplate() 
{ 
    $template = Mage::getStoreConfig('path_to/yourmodule/config'); 
    return $template; 
} 
+0

Grazie attirato ... sto cercando fuori ... ma ho avuto questo errore: Fatal error: 'Mage_Prem_Spectra_Helper_Data' Classe non trovato in D: \ xampp \ htdocs \ magento17 \ app \ Mage.php su linea 546. Ho aggiunto la funzione al mio helper predefinito. e imposta