2010-11-23 29 views
1

Dans mes catégories de niveau supérieur, j'utiliserais à la fois des blocs et des produits statiques avec une navigation par calques. La façon dont je veux l'utiliser est que lorsqu'aucune des options de navigation en couches n'a été sélectionnée, un bloc statique s'affiche uniquement (toys.phtml), tandis que si l'une des options est sélectionnée, le bloc statique est masqué et seuls les produits s'affichent (toys.phtml? brand = 1).Magento - Afficher/masquer Bloc CMS lorsque le mode d'affichage 'Static Block and Products' est sélectionné dans la catégorie

Quelqu'un a-t-il des suggestions pour cela? Je suis assez sûr que je peux cacher les produits (vérifier la chaîne URL pour les variables $ _GET), mais je ne sais pas comment je peux cacher le bloc statique.

Merci d'avance.

Répondre

0

Vous devez modifier ou remplacer le Mage_Catalog_CategoryController (viewAction) et ajoutez juste avant l'instruction $this->renderLayout();, ajoutez ce qui suit:

if($this->getRequest()->getParam('brand')) 
    $this->getLayout()->unsetBlock('yourstaticblockname'); 
+0

Merci pour la recherche, il n'a pas fonctionné cependant. Je l'ai regardé plus loin et il apparaît quand 'Mode mixte' est défini pour une catégorie, il charge le bloc dynamiquement (CreateBlock ('cms/block')) avec un identifiant de bloc de $ this-> getCurrentCategory() -> getLandingPage() Voir catalog/block/category/view.php (getCmsBlockHtml()). J'ai également remarqué qu'il y a des fonctions dans ce fichier telles que isProductMode(), isContentMode(), isMixedMode(). Savez-vous d'une manière que le mode d'affichage pourrait être défini à partir du contrôleur basé sur si un paramètre est défini. – Petet

+0

Le moyen le plus propre est d'ajouter un attribut à la classe Mage_Catalog_Block_Category_View ($ _forced_display_mode) et de le définir à partir du contrôleur $ this-> getLayout() -> getBlock ('products.listing') -> setForcedDisplayMode (Mage_Catalog_Model_Category :: DM_PAGE) (juste un exemple). Ensuite, vous devez modifier isMixedMode(), isProductMode() et isContentMode() pour donner la priorité à l'attribut $ _forced_display_mode sur l'attribut de catégorie de base de données. Faites-moi savoir si cela fonctionne. –

+0

J'ai trouvé une autre solution en fait. Dans le même endroit, vous avez recommandé de mettre votre code d'origine, j'ai mis le si ($ category-> getLevel() == 2) { $ category-> setDisplayMode ('PAGE'); } Cela semble fonctionner parfaitement, y compris lorsqu'un paramètre est sélectionné dans la navigation par couches ... – Petet