Ich frage mich, wie man überprüft, ob ein bestimmter CMS-Block aktiv ist oder nicht.
Bisher habe ich festgestellt, dass der CMS-Block die Mage_Cms_Block_Block
-Klasse ist, die von Mage_Cms_Block_Abstract
class
Mage :: log (get_klasse (Mage :: app () - & gt; getLayout () - & gt; createBlock ('cms / block') - & gt; setBlockId ('promo_space')
Keine der beiden Klassen hat Methoden, die prüfen würden, ob der Block aktiv ist oder nicht. Wie mache ich das?
Habe ich selbst
Ich habe eine Methode isActive (Identifiere, Value) im Helper "Block" im lokalen Mage / Cms Modul erstellt.
So sieht die Methode aus
%Vor%Parameter $ Attribut ist Tabelle (cms-Block) Feld wie 'Bezeichner' oder 'Titel' und Wert kann der Name des statischen Blocks oder Bezeichners selbst sein. Mit beiden wurde der bestimmte statische Block herausgefiltert, an dem Sie interessiert sind
So nenne ich den Helfer
%Vor%Ich habe auch die Datei config.xml für den Cms-Block aktualisiert, um meinen neuen Helfer und die Methode zu lesen.
Ich hoffe, es ist nützlich.
Mage::getModel('cms/block')->load('static_block_identifier')->getIsActive()
Ersetzen Sie static_block_identifier durch den Bezeichner , den Sie Ihrem statischen CMS-Block zugewiesen haben.
Eine bessere Möglichkeit, dies zu tun, besteht darin, einen Beobachter zu diesem Ereignis hinzuzufügen: controller_action_layout_generate_blocks_nach dem passiert, nachdem Magento Block-Objekte initialisiert und generiert hat. Sie haben Zugriff auf die Layout- und Aktionsklassen und auf alle generierten Blöcke, bevor HTML gerendert wird.
%Vor%Tags und Links magento