2012-07-21 21 views
5

Gibt es eine Möglichkeit, das Layout einer Magento-Seite (zB eine Produktkategorieseite) dynamisch zu ändern, indem wir Systemvariablen verwenden, die auf unserem eigenen Modul eingestellt sind? Ich möchte in der Lage sein, das Standardlayout meiner Kategorieseite über mein eigenes Modul Admin Config Panel zu setzen. Damit muss ich nicht jedes Mal mit dieser verwirrenden XML-Layoutdatei umgehen, wenn ich mein Standardlayout für eine bestimmte Magento-Seite ändern möchte.Magento ändert das Layout dynamisch über die Systemvariable

Ich weiß, in einer PHP-Datei könnten wir einfach die Systemvariable unseres eigenen Moduls aufrufen, indem wir Mage::getStoreConfig('module/scope/...') aufrufen, um diese Systemvariable zu verwenden. Was aber, wenn wir diese Systemvariable verwenden möchten, um das gesamte Layout zu ändern, das standardmäßig in der XML-Layoutdatei festgelegt ist.

Ich sehe keine Möglichkeiten, diesen Systemvariablenwert auf der XML-Layout-Datei zu ziehen.

Aber ich bin ziemlich sicher, dass es einen richtigen Weg geben muss, das zu tun. Bisher ist dies der nächste Hinweis, ich habe

Magento - xml layouts, specify value for ifconfig?

Aber noch, ich keine direkte Antwort finden konnte, für das, was ich wirklich will

dies ist der Inhalt der erreichen meine 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> 

Antwort

10

Dies kann sehr einfach mit Layout-XML und einer einfachen Methode in Ihrem Helfer erreicht werden. Ich sehe keine Notwendigkeit für einen Beobachter hier oder irgendetwas anderes übermäßig ausgearbeitet.

So, basierend auf Ihren Anforderungen alle Kategorie Seitenlayouts von Ihrem eigenen Module speichern Konfigurationswert ändern finden Sie die folgenden in Ihrem Layout XML benötigen:

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

und die folgenden in Ihrer Module Standard Helfer:

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

Dank zog ... ich bin es ausprobieren ... aber ich habe diesen Fehler: Fatal error: Class 'Mage_Prem_Spectra_Helper_Data' nicht in D gefunden: \ xampp \ htdocs \ magento17 \ app \ Mage.php auf Zeile 546. Ich habe die Funktion zu meinem Standardhelfer hinzugefügt. und legen Sie