Wie füge ich einen Block (abhängig von der Konfiguration im Admin-Panel) in Magentos Layout-XML bedingt hinzu?
Wir können überprüfen, ob die Konfiguration für Aktionen wahr ist. Im folgenden Beispiel sample/config/show_toplinks
wird die Vorlagendatei zum Rendern der Top-Links verwendet , wenn die Konfiguration im Admin-Bereich (unter System-> Konfiguration) wahr ist links.phtml
. Wenn sample/config/show_toplinks
ist falsch , dann wird die Standard - Vorlage verwendet werden.
<reference name="top.links">
<action method="setTemplate" ifconfig="sample/config/show_toplinks">
<template>page/template/links.phtml</template>
</action>
</reference>
Ich habe diese Problemumgehung irgendwo im Web gefunden. Wir können eine leere Vorlage als Standardvorlage für Top-Links festlegen, wie folgt:
<reference name="top.links">
<action method="setTemplate" ifconfig="sample/config/show_toplinks">
<template>page/template/links.phtml</template>
</action>
<!-- OR set completely empty template -->
<action method="setTemplate">
<template>page/template/empty_template_for_links.phtml</template>
</action>
</reference>
In diesem Fall, wenn sample/config/show_toplinks
ist wahr , dann wird die Vorlage links.phtml
wird verwendet , und Top - Links angezeigt werden. Ist dies sample/config/show_toplinks
jedoch falsch , wird die empty_template_for_links.phtml
Vorlage verwendet und diese Vorlage ist vollständig leer, sodass kein HTML zurückgegeben wird und die Top-Links nicht sichtbar sind.
- Gibt es eine andere Möglichkeit, Blöcke abhängig von der Konfiguration im Admin-Bereich bedingt anzuzeigen oder auszublenden?
- Ist diese Problemumgehung sicher?
- Kann dies zu unerwarteten Fehlern führen?
BEARBEITEN:
Ausgehend von allen Antworten denke ich, dass die Lösung von Rick Kuipers für meinen Fall am bequemsten ist. Aber ich habe eine andere verwandte Frage:
<block type="core/template" name="my_block" template="my/block.phtml" />
<!-- ...add more blocks here -->
<reference name="footer">
<action method="append" ifconfig="sample/config/show_toplinks">
<block>my_block</block>
</action>
<!-- ...append more blocks here -->
</reference>
Wenn ich so viele Blöcke hinzufügen muss (mithilfe von append
Methode und ifconfig
), sagen wir 50,
wirkt sich das auf die Leistung aus ? Es werden nur einige der Blöcke angezeigt (dies hängt von der Benutzereinstellung in System -> Config ab), aber ich muss alle diese Blöcke hinzufügen, bevor ich sie bedingt anhängen kann <reference name="footer">...</reference>
.
Verarbeitet Magento sofort alle so hinzugefügten Blöcke?
<block type="core/template" name="my_block" template="my/block.phtml" />
Oder werden Bausteine nur verarbeitet, wenn sie in der Vorlage endgültig angezeigt werden müssen? Muss Magento also alle meine 50 Blöcke verarbeiten, obwohl nur einige dieser Blöcke angezeigt werden müssen?