2012-07-21 10 views
5

¿Hay alguna manera de cambiar dinámicamente el diseño de una página de Magento (digamos una página de categoría de producto) usando la variable del sistema que se ha configurado en nuestro propio módulo? Quiero poder establecer el diseño predeterminado de mi página de categoría a través de mi propio panel de configuración de administración de módulos. De modo que no tengo que lidiar con esos confusos archivos de diseño XML cada vez que quiero cambiar mi diseño predeterminado para una determinada página magento.Magento cambia el diseño dinámicamente a través de la variable de sistema

Sé, en un archivo phtml, podríamos simplemente llamar a la variable del sistema de nuestro propio módulo llamando al Mage::getStoreConfig('module/scope/...') para usar esa variable del sistema. pero, ¿qué sucede si queremos usar esa variable del sistema para cambiar todo el diseño que se establece en el archivo de diseño XML de forma predeterminada?

No veo ninguna forma de extraer ese valor de variable del sistema en el archivo de diseño XML.

Pero estoy bastante seguro de que debe haber una manera correcta de hacerlo. Hasta ahora, esta es la pista más cercana que tengo

Magento - xml layouts, specify value for ifconfig?

Pero, aún así, no pude encontrar ninguna respuesta directa a lo que realmente quiero lograr

este es el contenido de mi 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> 

Respuesta

10

Esto se puede lograr fácilmente utilizando el diseño xml y un método simple en su ayuda. No veo ningún requisito para un observador aquí o cualquier otra cosa demasiado elaborado.

Por lo tanto, en base a sus requerimientos para cambiar todos los diseños de página de categoría de su propio valor de almacén de configuración de módulos que se requieren lo siguiente en su diseño xml:

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

Y lo siguiente en su módulos de ayuda por defecto:

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

Gracias dibujaron ... estoy intentando que fuera ... pero me dio este error: error grave: 'Mage_Prem_Spectra_Helper_Data' clase no se encuentra en D: \ xampp \ htdocs \ magento17 \ app \ Mage.php en línea 546. He agregado la función a mi ayudante predeterminado. y establezca