10
votes

Comment vérifier que le bloc CMS est actif?

Je me demande comment vérifier qu'un bloc CMS particulier est actif ou non.

Jusqu'à présent, j'ai trouvé que le bloc CMS est Mage_cms_block_block Classe qui hérite de Mage_CMS_block_abstract Classe

Mage :: LOG (GET_CLASS (MAGE :: App () -> GetLayout () -> CreateBlock ('CMS / Bloc') -> SetBlockId ('Promo_space')

Aucune des deux classes n'a de méthodes qui vérifieraient que le bloc est actif ou non. Comment puis-je le faire?


0 commentaires

5 Réponses :


6
votes

obtenu cela moi-même

j'ai créé une méthode isactive (identifiant, valeur) dans l'assistant "Block" dans le module local Mage / CMS.

Voici comment la méthode a l'air < Pré> xxx

Paramètre $ attribut est le champ Table (bloc CMS) tel que "Identifiant" ou "Titre" et la valeur peut être le nom du bloc statique ou de l'identifiant lui-même. Les deux utilisaient pour filtrer le bloc statique particulier que vous êtes intéressé par

voici comment j'appelle l'assistant xxx

J'ai également mis à jour le fichier config.xml Fichier pour le bloc CMS pour lire mon nouvel assistant et ma méthode.

J'espère que c'est utile.


0 commentaires

1
votes

Peut-être que c'est vieux, mais j'utilise une autre méthode qui fonctionne non seulement pour les blocs CMS, mais également pour tout autre bloc chargé sur la mise en page. Si vous devez vérifier si un bloc a été chargé:

if($this->getLayout()->getBlock('your_block_name'))
  //Do whatever you need here


0 commentaires

1
votes

Un meilleur moyen de le faire consiste à ajouter de l'observateur à cet événement: contrôleur_action_layout_generate_blocks_after, qui se produit juste après que Magento ait initialisé et généré des objets de blocs. Vous avez accès aux classes de mise en page et d'action et à tous les blocs générés avant que HTML soit rendu xxx


0 commentaires

18
votes

mage :: getmodel ('cms / bloc') -> charge ("static_block_identifier ') -> getisactive ()

Remplacez static_block_Identifier avec l'identifiant que vous avez attribué à votre bloc statique CMS.


0 commentaires

4
votes

Ce code fonctionne pour moi:

if ( $this->getLayout()->createBlock('cms/block')->setBlockId('YOUR-BLOCK-ID')->toHtml() !== '' ) {}


0 commentaires