प्रत्येक ब्लॉक या ब्लॉक के समूह को config.xml
एक मॉड्यूल की फ़ाइल में इस तरह घोषित किया जाता है ( <global>
टैग के अंदर )।
कैटलॉग मॉड्यूल से एक उदाहरण यहां दिया गया है
<blocks><!-- marks definition of a block group -->
<catalog><!-- unique alias for blocks in the module -->
<class>Mage_Catalog_Block</class><!-- class prefix for all blocks -->
</catalog>
</blocks>
इसका मतलब यह है कि एक ब्लॉक का उपयोग उर्फ का उपयोग करके किया जा सकता है catalog/class_name_here
जहां class_name_here
उपसर्ग से शुरू होने वाला शेष वर्ग पथ है।
इसका मतलब catalog/class_name_here
डिफ़ॉल्ट रूप से मैप किया जाएगा Mage_Catalog_Block_Class_Name_Here
।
एक ब्लॉक को फिर से लिखने के लिए आपको एक मॉड्यूल बनाना होगा जो उस मॉड्यूल पर निर्भर करता है जिसे आप Magento_Catalog
मेरे उदाहरण में बदलना ( ) कर रहे हैं ।
और आपको config.xml
इसे <global>
टैग के तहत जोड़ना होगा ।
<blocks>
<catalog><!-- alias of the block group you are rewriting -->
<rewrite><!-- reserved tag: specify that you are rewriting something -->
<class_name_here>YourNamespace_YourModule_Block_Your_New_Class_Here</class_name_here> <!-- tag: the rest of the alias of the class you are rewriting. value: the name of your class that rewrites the core class -->
</rewrite>
</catalog>
</blocks>
फिर वर्ग बनाएं YourNamespace_YourModule_Block_Your_New_Class_Here
(ZF फ़ोल्डर संरचना का पालन करें) और इस वर्ग को मूल वर्ग का विस्तार करें।
class YourNamespace_YourModule_Block_Your_New_Class_Here extends Mage_Catalog_Block_Class_Name_Here
{
//your awesome code here
}
जब आप कर लें, तो संकलन अक्षम करें और इसे फिर से सक्षम करें (यदि आवश्यक हो) और कैश को साफ़ करें।
यह अमूर्त ब्लॉकों के लिए काम नहीं करेगा।
यह केवल उन कक्षाओं के लिए काम करता है, जो त्वरित हो जाते हैं।
उदाहरण
मान लेते हैं कि आप फ़ाइल ऐप \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ \ _ टाइप करने के लिए फिर से लिखना चाहते हैं, जिसका वर्ग Mage_Catalog_Block_Product_View_Options_Type_Select
आपके खुद के मॉड्यूल Marius_Test में है ।
तब आपको इस प्रविष्टि की आवश्यकता होगी config.xml
:
<blocks>
<catalog>
<rewrite>
<product_view_options_type_select>Marius_Test_Block_Catalog_Block_Product_View_Options_Type_Select</product_view_options_type_select>
</rewrite>
</catalog>
</blocks>
एप्लिकेशन \ code \ local \ Marius \ Test \ Block \ कैटलॉग \ Product \ View \ Options \ Type \ Select.php :
class Marius_Test_Block_Catalog_Product_View_Options_Type_Select extends Mage_Catalog_Block_Product_View_Options_Type_Select
{
//your awesome code here
}
Mage_Catalog_Block_Product_View_Options_Type_Select
में वर्ग को अधिलेखित करने का प्रयास करता हूं । मैंने इसे इस तरह आज़माया