क्या लेआउट XML में ब्लॉक प्रकार बदलना संभव है?
मुझे पता है कि setTemplate
विधि का उपयोग करके टेम्पलेट को कैसे बदलना है , लेकिन मैं एक ब्लॉक के प्रकार को बदलने की कोशिश कर रहा हूं। क्या यह संभव है?
क्या लेआउट XML में ब्लॉक प्रकार बदलना संभव है?
मुझे पता है कि setTemplate
विधि का उपयोग करके टेम्पलेट को कैसे बदलना है , लेकिन मैं एक ब्लॉक के प्रकार को बदलने की कोशिश कर रहा हूं। क्या यह संभव है?
जवाबों:
ब्लॉक प्रकार बदलने का अर्थ है ब्लॉक क्लास को बदलना, इसलिए नहीं, लेकिन ...
... आप ब्लॉक को अधिलेखित कर सकते हैं:
layout.xml
द्वारा ब्लॉक बनाए जाने के बाद संसाधित किया गया है, जैसे कि <depends>
अंदरCompany_Module.xml
समस्या यह है, कि यह ब्लॉक को ओवरराइट कर देता है और प्रकार नहीं बदलता है। इसका मतलब यह है कि सृष्टि के बीच इस ब्लॉक पर जो कुछ भी किया जाता है और आपका परिवर्तन खो जाता है।
उदाहरण के लिए catalog.navigation
:
<layout version="0.1.0">
<catalog_category_default translate="label">
<reference name="left">
<block type="myModule/navigation" name="catalog.leftnav" after="currency" template="myModule/catalog/navigation/left.phtml"/>
</reference>
</catalog_category_default>
</layout>
आप इसे लेआउट-फाइलों में बदल नहीं सकते हैं। हालाँकि, आप अपनी कॉन्फिग-फाइल्स में इन्हें बढ़ा सकते हैं और ओवरराइड कर सकते हैं।
उदाहरण:
<config>
<global>
<blocks>
<catalog>
<rewrite><product_view>My_Custom_Block_Product_View</product_view></rewrite>
</catalog>
</blocks>
</global>
</config>
मूल ब्लॉक का विस्तार करना याद रखें।
मैं इसी तरह के मुद्दे का सामना कर रहा था कि मुझे एक विशिष्ट लेआउट के लिए एक विशिष्ट ब्लॉक को अपडेट करने की आवश्यकता है।
मैं क्या कर रहा हूँ और ऐसा लगता है कि काम करना है (लेआउट फ़ाइल में)
<controller_x_y>
<reference name="block_name_reference">
<block type="mymodule/customblock" name="block_name_reference" />
</reference>
</controller_x_y>
उम्मीद है की यह मदद करेगा।