Ich möchte Änderungen am Inhalt der CMS-Seite dynamisch vornehmen, bevor die Seite im Front-End geladen wird.
Ich möchte Änderungen am Inhalt der CMS-Seite dynamisch vornehmen, bevor die Seite im Front-End geladen wird.
Antworten:
Da jede Anfrage über einen Controller in Magento verarbeitet wird, beginnen Mage_Cms_PageController
wir dort, wo wir sehen, dass der cms/page
Helfer die Seite tatsächlich rendert.
Dies erfolgt in der Methode _renderPage
. Bei dieser Methode finden wir das Ereignis cms_page_render
in Zeile 107. Dieses Ereignis gibt Ihnen unter anderem das page
Objekt.
Dieses Objekt enthält alle Daten Ihrer Seite. Jetzt können Sie dieses Ereignis von Ihrer benutzerdefinierten Build-Erweiterung aus beobachten, indem Sie es der Datei config.xml hinzufügen
<?xml version="1.0"?>
<config>
<global>
<events>
<cms_page_render>
<observers>
<your_extension_cms_observer>
<type>singleton</type>
<class>Your_Extension_Model_Csm_Observer</class>
<method>changeContent</method>
</your_extension_cms_observer>
</observers>
</cms_page_render>
</events>
</global>
</config>
Dies ruft die Klasse auf Your_Extension_Model_Csm_Observer
, eine Methode, changeContent
die ungefähr so aussehen sollte
class Your_Extension_Model_Csm_Observer
{
public function changeContent($observer)
{
$event = $observer->getEvent();
$cms_page = $event->getPage();
[...]
your code goes here
[...]
return $this;
}
}
Weitere Informationen zu Beobachtern finden Sie auf dieser Wiki-Seite