Comment ajouter conditionnellement un bloc (en fonction de la configuration dans le panneau d'administration) dans le XML de présentation de Magento?
Nous pouvons vérifier si la configuration est vraie pour les actions. Dans l'exemple ci-dessous, si sample/config/show_toplinks
config à partir du panneau d'administration (dans Système-> Configuration) est true , le fichier de modèle links.phtml
sera utilisé pour rendre les liens Top. Si la valeur sample/config/show_toplinks
est false , le modèle par défaut sera utilisé.
<reference name="top.links">
<action method="setTemplate" ifconfig="sample/config/show_toplinks">
<template>page/template/links.phtml</template>
</action>
</reference>
J'ai trouvé cette solution de contournement quelque part sur le Web. Nous pouvons définir un modèle vide comme modèle par défaut pour les liens principaux, comme ceci:
<reference name="top.links">
<action method="setTemplate" ifconfig="sample/config/show_toplinks">
<template>page/template/links.phtml</template>
</action>
<!-- OR set completely empty template -->
<action method="setTemplate">
<template>page/template/empty_template_for_links.phtml</template>
</action>
</reference>
Dans ce cas, si sample/config/show_toplinks
est true , le modèle links.phtml
sera utilisé et Top Links sera affiché. mais si la valeur sample/config/show_toplinks
est false , le empty_template_for_links.phtml
modèle sera utilisé et ce modèle est complètement vide. Il ne renvoie donc aucun code HTML et les liens supérieurs ne sont pas visibles.
- Existe-t-il un autre moyen d'afficher ou de masquer de manière conditionnelle des blocs en fonction de la configuration dans le panneau d'administration?
- Cette solution de contournement est-elle sûre?
- Est-ce que cela peut causer des erreurs inattendues?
MODIFIER:
Sur la base de toutes les réponses, je pense que la solution de Rick Kuipers semble la plus pratique pour mon cas. Mais j'ai une autre question connexe:
<block type="core/template" name="my_block" template="my/block.phtml" />
<!-- ...add more blocks here -->
<reference name="footer">
<action method="append" ifconfig="sample/config/show_toplinks">
<block>my_block</block>
</action>
<!-- ...append more blocks here -->
</reference>
Si j'ai beaucoup de blocs à ajouter comme ceci (en utilisant append
method et ifconfig
), disons 50,
cela affecte-t-il les performances ? Seuls quelques-uns des blocs seront réellement affichés (cela dépend du paramétrage de l'utilisateur dans Système -> Config), mais je dois ajouter tous ces blocs avant de les ajouter conditionnellement à l'intérieur <reference name="footer">...</reference>
.
Est-ce que Magento traite instantanément tous les blocs ajoutés comme ceci?
<block type="core/template" name="my_block" template="my/block.phtml" />
Ou les blocs ne sont traités que s’ils doivent être finalement affichés dans le modèle? Alors, Magento devra-t-il traiter la totalité de mes 50 blocs alors que seuls certains de ces blocs doivent être affichés?