¿Cómo agregar condicionalmente un bloque (dependiendo de la configuración en el panel de administración) en el diseño XML de Magento?
Podemos verificar si config es verdadero en las acciones. En el ejemplo a continuación, si la sample/config/show_toplinks
configuración desde el panel de administración (en Sistema-> Configuración) es verdadera , entonces el archivo de plantilla links.phtml
se usará para representar los Enlaces principales. Si sample/config/show_toplinks
es falso , se utilizará la plantilla predeterminada.
<reference name="top.links">
<action method="setTemplate" ifconfig="sample/config/show_toplinks">
<template>page/template/links.phtml</template>
</action>
</reference>
Encontré esta solución en algún lugar de la web. Podemos configurar una plantilla vacía como plantilla predeterminada para Top Links, de esta manera:
<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>
En este caso, si sample/config/show_toplinks
es cierto , links.phtml
se utilizará la plantilla y se mostrarán los enlaces principales. pero si sample/config/show_toplinks
es falso , la empty_template_for_links.phtml
plantilla se usará y esa plantilla estará completamente vacía, por lo que no devuelve ningún HTML y los enlaces principales no estarán visibles.
- ¿Hay alguna otra forma de mostrar u ocultar condicionalmente los bloques dependiendo de la configuración en el panel de administración?
- ¿Es segura esta solución?
- ¿Puede esto causar algún error inesperado?
EDITAR:
Basado en todas las respuestas, creo que la solución de Rick Kuipers parece la más conveniente para mi caso. Pero tengo otra pregunta relacionada:
<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 tengo que agregar muchos bloques como este (usando el append
método y ifconfig
), digamos 50,
¿afecta el rendimiento ? Solo se mostrarán realmente algunos de los bloques (eso depende de la configuración del usuario en el Sistema -> Configuración), pero necesito agregar todos esos bloques antes de agregarlos condicionalmente dentro <reference name="footer">...</reference>
.
¿Magento procesa instantáneamente todos los bloques agregados así?
<block type="core/template" name="my_block" template="my/block.phtml" />
¿O los bloques se procesan solo si finalmente deben mostrarse en la plantilla? Entonces, ¿Magento tendrá que procesar todos mis 50 bloques a pesar del hecho de que solo algunos de esos bloques deben mostrarse?