Magento के लेआउट XML में सशर्त रूप से एक ब्लॉक (व्यवस्थापक पैनल में कॉन्फ़िगरेशन के आधार पर) कैसे जोड़ें?
हम जाँच कर सकते हैं कि क्या क्रियाओं पर विन्यास सही है। नीचे दिए गए उदाहरण में, यदि 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 वापस नहीं करता है और शीर्ष लिंक नहीं दिखाई देंगे।
- क्या व्यवस्थापक पैनल में कॉन्फ़िगरेशन के आधार पर सशर्त रूप से ब्लॉक दिखाने या छिपाने का कोई अन्य तरीका है?
- क्या यह वर्कअराउंड सुरक्षित है?
- क्या यह किसी अप्रत्याशित त्रुटि का कारण बन सकता है?
संपादित करें:
सभी उत्तरों के आधार पर मुझे लगता है कि रिक कुइपर्स का समाधान मेरे मामले के लिए सबसे सुविधाजनक है। लेकिन मेरे पास एक और संबंधित प्रश्न है:
<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 ब्लॉकों को संसाधित करना होगा कि उनमें से कुछ ब्लॉकों को ही प्रदर्शित करने की आवश्यकता है?