2010-10-21 11 views
2

J'ai créé un module avec plusieurs contrôleurs différents et donc des pages différentes.Magento layout module_default

Je veux avoir une barre latérale par défaut sur chacune de mes propres pages, mais pas sur le reste du site. Lorsque j'utilise le <default></default>, il est évident qu'il se propage sur tout le site. Quand j'essaye <mymodule_default></mymodule_default>, rien ne se passe.

Il me reste donc à copier et coller toute ma mise en page pour chaque page de mon module.

Y a-t-il un moyen dans les mises en page magento de ne spécifier qu'une seule fois, du xml qui doit être partagé par chaque page qui appartient à un module?

+1

Je pense que vous avez peut-être perdu certains de vos extraits de code dans la question, pouvez-vous les modifier et les publier de nouveau? La réponse courte à votre question est "Oui, vous devriez être capable de spécifier une fois", mais voyons d'abord le reste de vos exemples! :) –

Répondre

5

Bien sûr, c'est certainement possible. Lorsque vous chargez une présentation en utilisant loadLayout, il existe des arguments implicites à la fonction, même si elle est généralement appelée sans arguments. La fonction loadLayout prendra en fait une ou plusieurs chaînes à charger par défaut. Ce qui signifie que vous pouvez faire ceci:

$this->loadLayout(array('default', 'your_layout_handle')); 

Définition d'une mise en page pour cette poignée comme ceci:

<layout> 
    <your_layout_handle> 
     <reference name="left"> 
      <block type="yourmodule/yourblock" /> 
     </reference> 
    </your_layout_handle> 
</layout> 

Hope that helps!

Merci, Joe

+1

Super! Cela semble avoir fonctionné. Je dois admettre, beaucoup de magento semble être le vaudou en ce moment. C'est si mal documenté et il prend beaucoup de temps pour faire des choses très simples. Je commence à penser qu'il a été la mauvaise décision de passer à magento pour le développement du commerce électronique. – David

+0

5 ans plus tard, vous avez encore aidé quelqu'un :) merci! –

+1

@NicolasD a) wow. geez. vieux. b) heureux que cela ait aidé: D –

1

Pour chaque section de mise en page qui se rapporte à l'une de vos pages ajouter une référence de mise à jour.

<mymodule_page_index> 
    <update handle="mymodule_default"/> 
</mymodule_page_index> 

La même chose est utilisée pour les pages de compte client dans customer.xml.