Ich habe einen benutzerdefinierten Controller, auf den über den folgenden Pfad zugegriffen /custommodule/customer/info
wird, der die 2columns-left.phtml
Vorlage auf den root
Knoten lädt :
<custommodule_customer_info>
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
</reference>
</custommodule_customer_info>
Ich möchte die Stammvorlage für Kunden aktualisieren, die nicht angemeldet sind, z. B .:
<customer_logged_out>
<custommodule_customer_info>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</custommodule_customer_info>
</customer_logged_out>
Ich verstehe, dass ich auf diese Weise nicht auf mehrere Layout-Handles zugreifen kann, aber die Absicht sollte klar sein. Aktualisieren Sie die Stammvorlage für dieses Layout-Handle, während Kunden nicht angemeldet sind.
Ich hatte gedacht, dass ich den Handle meines Controllers wie folgt anvisieren könnte:
<customer_logged_out>
<reference name="custommodule_customer_info">
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</reference>
</customer_logged_out>
Dadurch wird zwar die Stammvorlage mit der 1column.phtml
Vorlage aktualisiert , dies geschieht jedoch auf scheinbar allen Seiten und nicht nur auf der Seite, auf die sich mein reference
Knoten bezieht .
Ich habe mehrere Permutationen dieses Layout-Updates ausprobiert, aber keine scheint zu funktionieren. Wie kann ich dieses eine Layout-Handle anvisieren und gleichzeitig das customer_logged_out
Layout-Handle verwenden?
- edit - Um es klar auszudrücken, handelt es sich tatsächlich um ein Drittanbieter-Modul.
customer_logged_in/out
Griffe könnten so mächtig sein, aber sie werden wegen dieser Einschränkung gimpen.Alan Storm hat so etwas ähnliches beantwortet:
/programming//a/5601579/1157493
Sie können einen Helfer verwenden, um zu prüfen, ob der Benutzer angemeldet ist.
Es ruft
Mage::helper('mymodule/myhelper')->switchTemplateIf();
in diesem Helfer Sie entscheiden können , um die Vorlage zu wechseln oder es einfach weiter so.Ich glaube, es setzt die Vorlage auf das, was Sie
return
in dieser Funktion tun.Es würde ungefähr so aussehen:
Ungetestet
quelle
Ich brauchte kürzlich diese Art von Funktionalität und es wurde schwierig, mehr und mehr Layout-Handles für alle verschiedenen Kombinationen vorhandener Layout-Handles hinzuzufügen. Deshalb habe ich eine Magento-Erweiterung erstellt, um die Möglichkeit hinzuzufügen, mehrere Layout-Handles direkt aus dem Layout-XML-Code auszuwählen.
Hier ist der Link zur Erweiterung https://github.com/mridul89/MultipleHandles.git
Du würdest es so benutzen-
Dadurch wird Magento angewiesen, dieses spezielle
customer_logged_out
Layout-Handle nur zu verwenden , wenn auch eincustommodule_customer_info
Layout-Handle vorhanden ist.quelle