Nehmen Sie vor dem Laden in Magento Änderungen am Seiteninhalt vor

7

Ich möchte Änderungen am Inhalt der CMS-Seite dynamisch vornehmen, bevor die Seite im Front-End geladen wird.

Lalit Kaushik
quelle

Antworten:

16

Da jede Anfrage über einen Controller in Magento verarbeitet wird, beginnen Mage_Cms_PageControllerwir dort, wo wir sehen, dass der cms/pageHelfer die Seite tatsächlich rendert.

Dies erfolgt in der Methode _renderPage. Bei dieser Methode finden wir das Ereignis cms_page_renderin Zeile 107. Dieses Ereignis gibt Ihnen unter anderem das pageObjekt.

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, changeContentdie 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

Sander Mangel
quelle