Bagaimana cara menambahkan blok secara kondisional (tergantung pada konfigurasi di panel admin) di tata letak Magento's XML?
Kami dapat memeriksa apakah konfigurasi benar pada tindakan. Dalam contoh di bawah ini, jika sample/config/show_toplinks
konfigurasi dari panel admin (di System-> Configuration) benar , maka file template links.phtml
akan digunakan untuk membuat Top Links. Jika sample/config/show_toplinks
adalah palsu , maka template default akan digunakan.
<reference name="top.links">
<action method="setTemplate" ifconfig="sample/config/show_toplinks">
<template>page/template/links.phtml</template>
</action>
</reference>
Saya menemukan solusi ini di suatu tempat di web. Kami dapat menetapkan templat kosong sebagai templat default untuk Tautan Teratas, seperti ini:
<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>
Dalam hal ini, jika sample/config/show_toplinks
adalah true , maka template links.phtml
akan digunakan dan Top Link akan ditampilkan. tetapi jika sample/config/show_toplinks
ini palsu , maka empty_template_for_links.phtml
template yang akan digunakan dan template yang benar-benar kosong, sehingga tidak kembali HTML apapun dan Top Links tidak akan terlihat.
- Apakah ada cara lain untuk menampilkan atau menyembunyikan blok tergantung pada konfigurasi di panel admin?
- Apakah solusi ini aman?
- Apakah ini dapat menyebabkan kesalahan yang tidak terduga?
EDIT:
Berdasarkan semua jawaban, saya pikir solusi Rick Kuipers terlihat paling nyaman untuk kasus saya. Tapi saya punya pertanyaan terkait lainnya:
<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>
Jika saya memiliki banyak blok untuk ditambahkan seperti ini (menggunakan append
metode dan ifconfig
), katakanlah 50,
apakah itu mempengaruhi kinerja ? Hanya beberapa blok yang akan benar-benar ditampilkan (itu tergantung pada pengaturan pengguna di Sistem -> Config), tetapi saya perlu menambahkan semua blok itu sebelum saya menambahkannya secara kondisional di dalamnya <reference name="footer">...</reference>
.
Apakah Magento langsung memproses semua blok yang ditambahkan seperti ini?
<block type="core/template" name="my_block" template="my/block.phtml" />
Atau blok diproses hanya jika akhirnya harus ditampilkan dalam templat? Jadi, apakah Magento harus memproses semua 50 blok saya meskipun hanya beberapa blok yang perlu ditampilkan?