Як умовно додати блок (залежно від конфігурації на панелі адміністратора) у макеті XML макета Magento?
Ми можемо перевірити, чи конфігурація вірна для дій. У наведеному нижче прикладі, якщо sample/config/show_toplinks
конфігурація з панелі адміністратора (у системі-> Конфігурація) є правдою , то файл шаблону links.phtml
буде використовуватися для візуалізації верхніх посилань. Якщо sample/config/show_toplinks
це брехня , то буде використовуватися шаблон за замовчуванням.
<reference name="top.links">
<action method="setTemplate" ifconfig="sample/config/show_toplinks">
<template>page/template/links.phtml</template>
</action>
</reference>
Я знайшов це вирішення десь в Інтернеті. Ми можемо встановити порожній шаблон як шаблон за замовчуванням для Топ-посилань, як-от так:
<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>
У цьому випадку, якщо sample/config/show_toplinks
це правда , тоді links.phtml
буде використаний шаблон і відображатимуться Топ посилань. але якщо sample/config/show_toplinks
це брехня , то empty_template_for_links.phtml
шаблон буде використовуватися , і цей шаблон повністю порожній, тому він не повертає HTML і Top посилання не буде видно.
- Чи є якийсь інший спосіб умовно показати або приховати блоки залежно від конфігурації на панелі адміністратора?
- Чи безпечне це рішення?
- Чи може це викликати несподівані помилки?
Редагувати:
Виходячи з усіх відповідей, я думаю, що рішення Ріка Куйперса виглядає найзручнішим для мого випадку. Але у мене є ще одне пов'язане питання:
<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>
Якщо у мене є багато блоків, які потрібно додати так (використовуючи append
метод і ifconfig
), скажімо, 50,
чи це впливає на продуктивність ? Дійсно відображатимуться лише деякі блоки (це залежить від налаштувань користувача у Системі -> Налаштувати), але мені потрібно додати всі ці блоки, перш ніж я умовно додаю їх всередину <reference name="footer">...</reference>
.
Чи Magento миттєво обробляє всі додані таким чином блоки?
<block type="core/template" name="my_block" template="my/block.phtml" />
Або блоки обробляються лише в тому випадку, якщо їх потрібно остаточно відобразити в шаблоні? Тож чи доведеться Magento обробляти всі мої 50 блоків, незважаючи на те, що потрібно відображати лише деякі з цих блоків?