Wie kann ein Block zum Layout hinzugefügt werden, wenn im Layout ein CMS-Block vorhanden ist?
-
11-12-2019 - |
Frage
Hier ist also die Situation.Ich muss eine erstellen core/template
Programmgesteuert blockieren, falls vorhanden CMS Block
(Static Block
) ist in der Layoutstruktur vorhanden.Ich werde diese Vorlage verwenden, um dynamisch Inhalte hinzuzufügen.
Wenn es einen Beobachter für statische Blöcke gibt, kann ich ihn verwenden.Eine andere Möglichkeit wäre, dass ich dasselbe durch Layouts erreichen kann, wenn ein statischer blockspezifischer Layout-Handle vorhanden ist (genau wie cms_page
Layout-Handle).
Aber ich konnte noch keinen Beobachter für statische Blöcke finden.Ich kann also nicht mit Beobachter gehen.Ich suche auch nach einem statischen Block-spezifischen Layout-Handle.Diese Suche hat auch mich zur Verzweiflung gebracht.Ich konnte keinen finden.Daher ist auch die Aktualisierung des Layouts nicht möglich.
Daher scheint es die einzige Möglichkeit zu sein, dies zu erreichen, indem ich allgemeine Ereignisse beobachte (vielleicht). controller_action_layout_generate_blocks_after
).Aber ich finde, es ist eine zu schlechte Art und Weise.
Was soll ich jetzt machen ?Was wäre die beste Methode, dies zu tun?Kann ich einen benutzerdefinierten Ereignis-Listener für statische Blöcke erstellen (ich weiß nicht, ob das möglich ist!!)?Teile deine Gedanken.
Notiz : Ich erstelle eine Erweiterung.Ich möchte es so sauber wie möglich haben.:) :)
Lösung 2
Es scheint, dass es keinen anderen Weg gibt, dies zu tun.Also habe ich mir das allgemeine Geschehen angehört controller_action_layout_generate_blocks_after
.Dort habe ich einen neuen Block erstellt, falls ein CMS-Block vorhanden ist.
Andere Tipps
Vielleicht können Sie einen Helfer im XML verwenden und nach einer Bedingung darin suchen, indem Sie eine Bedingung im XML ausführen und dann entsprechend handeln.Es könnte besser sein, als jede einzelne Blocklast mit einem Beobachter zu beobachten.
Hier ist eine Antwort für den XML-Ansatz.
<action method="addLink" translate="label title" module="catalog" ifconfig="catalog/seo/site_map">
<label>Site Map</label>
<url helper="catalog/map/getCategoryUrl" />
<title>Site Map</title>
</action>