Come aggiungere condizionalmente un blocco (a seconda della configurazione nel pannello di amministrazione) nel layout XML di Magento?
Possiamo verificare se la configurazione è vera per le azioni. Nell'esempio seguente, se la sample/config/show_toplinks
configurazione dal pannello di amministrazione (in Sistema-> Configurazione) è vera , il file modello links.phtml
verrà utilizzato per eseguire il rendering dei collegamenti principali. Se sample/config/show_toplinks
è falso , verrà utilizzato il modello predefinito.
<reference name="top.links">
<action method="setTemplate" ifconfig="sample/config/show_toplinks">
<template>page/template/links.phtml</template>
</action>
</reference>
Ho trovato questa soluzione alternativa da qualche parte nel web. Possiamo impostare un modello vuoto come modello predefinito per i collegamenti principali, in questo modo:
<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>
In questo caso, se sample/config/show_toplinks
è vero , links.phtml
verrà utilizzato il modello e verranno visualizzati i collegamenti principali. ma se sample/config/show_toplinks
è falso , empty_template_for_links.phtml
verrà utilizzato il modello e quel modello è completamente vuoto, quindi non restituisce alcun HTML e i collegamenti principali non saranno visibili.
- Esiste un altro modo per mostrare o nascondere in modo condizionale i blocchi a seconda della configurazione nel pannello di amministrazione?
- Questa soluzione alternativa è sicura?
- Ciò può causare errori imprevisti?
MODIFICARE:
Sulla base di tutte le risposte, penso che la soluzione di Rick Kuipers sia la più conveniente per il mio caso. Ma ho un'altra domanda correlata:
<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>
Se ho molti blocchi da aggiungere in questo modo (usando il append
metodo e ifconfig
), diciamo 50,
influisce sulle prestazioni ? Solo alcuni dei blocchi verranno realmente visualizzati (ciò dipende dalle impostazioni dell'utente nel Sistema -> Config), ma devo aggiungere tutti quei blocchi prima di aggiungerli condizionalmente all'interno <reference name="footer">...</reference>
.
Magento elabora istantaneamente tutti i blocchi aggiunti in questo modo?
<block type="core/template" name="my_block" template="my/block.phtml" />
O i blocchi vengono elaborati solo se devono essere finalmente visualizzati nel modello? Quindi Magento dovrà elaborare tutti i miei 50 blocchi nonostante il fatto che solo alcuni di questi blocchi debbano essere visualizzati?