J'ai un contrôleur personnalisé accédé au chemin /custommodule/customer/info
qui charge le 2columns-left.phtml
modèle sur le root
nœud comme suit:
<custommodule_customer_info>
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
</reference>
</custommodule_customer_info>
Ce que je voudrais faire, c'est mettre à jour le modèle racine pour les clients qui ne sont pas connectés, par exemple:
<customer_logged_out>
<custommodule_customer_info>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</custommodule_customer_info>
</customer_logged_out>
Je comprends que je ne peux pas cibler plusieurs descripteurs de disposition de cette manière, mais l'intention doit être claire; mettre à jour le modèle racine pour ce descripteur de mise en page alors que les clients ne sont pas connectés.
J'avais pensé que je pouvais cibler la poignée de mon contrôleur avec ce qui suit:
<customer_logged_out>
<reference name="custommodule_customer_info">
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</reference>
</customer_logged_out>
Cela met en effet à jour le modèle racine avec le 1column.phtml
modèle, mais il le fait sur ce qui semble être toutes les pages au lieu de simplement la page ciblée dans mon reference
nœud.
J'ai essayé plusieurs permutations de cette mise à jour de mise en page, mais aucune ne semble fonctionner. Comment puis-je cibler cette poignée de mise en page tout en utilisant la customer_logged_out
poignée de mise en page?
- modifier - Pour être clair, il s'agit en fait d'un module tiers.
customer_logged_in/out
poignées pourraient être si puissantes, mais elles se font deviner à cause de cette limitation.Alan Storm a répondu à quelque chose de similaire comme ceci:
/programming//a/5601579/1157493
Vous pouvez utiliser un assistant pour faire votre logique de vérifier si la connexion personnalisée est connectée.
Il appellera
Mage::helper('mymodule/myhelper')->switchTemplateIf();
Dans cet assistant, vous pouvez décider de changer de modèle ou de simplement le conserver comme ceci.Je crois que cela définit le modèle pour tout ce que vous
return
dans cette fonction.Cela ressemblerait à quelque chose comme ceci:
Non testé
la source
J'ai récemment eu besoin de ce type de fonctionnalité et il devenait difficile d'ajouter de plus en plus de poignées de disposition pour toutes les différentes combinaisons de poignées de disposition existantes, j'ai donc créé une extension magento pour ajouter la possibilité de cibler plusieurs poignées de disposition directement à partir du XML de disposition.
Voici le lien vers l'extension- https://github.com/mridul89/MultipleHandles.git
Vous l'utiliseriez comme ça-
Cela indiquera à magento de n'utiliser cette
customer_logged_out
poignée de mise en page particulière que si lacustommodule_customer_info
poignée de mise en page est également présente.la source