magento
मॉड्यूल संरचना
खोज…
टिप्पणियों
मॉड्यूल्स को विस्तारित करने के लिए मौजूद हैं। आप भविष्य के किसी भी अपडेट को प्रतिबंधित किए बिना the app/code/
फाइलें नहीं बदल सकते। इसके बजाय हम app/code/local
निर्देशिका में एक मॉड्यूल जोड़ते हैं (स्थानीय निर्देशिका गायब हो सकती है, यदि हां, तो इसे मैन्युअल रूप से बनाने की आवश्यकता है। अतिरिक्त कस्टम स्थानीय कार्यक्षमता के लिए यह Magento के बाद के संस्करणों में आम है)।
सभी मॉड्यूल कॉन्फ़िगरेशन फ़ाइलें <config>
टैग के साथ शुरू होती हैं। नया मॉड्यूल <modules>
टैग के अंदर घोषित किया गया है। हम आपका एक मॉड्यूल कह रहे हैं जिसे आपका नाम कहा जाता है, जैसे कि <YOUR_COMPANY_HelloWorld>
। टैग का उपयोग किया जाता है। यहाँ हम संस्करण को परिभाषित करते हैं (बहुत पहले = 0.0.1)
XML घटनाओं की एक सूची यहां पर देखी जा सकती है: http://www.magentocommerce.com/wiki/5_-_odod__and_development/reference/module_config.xml
यदि आपको कोई परेशानी हो रही है, तो देखें: http://coding.smashingmagazine.com/2012/11/30/introducing-magento-layout/
खरोंच से एक मॉड्यूल बनाना (हैलो वर्ल्ड)
Magento के कस्टम मॉड्यूल विकास किसी Magento के विकास या Magento परियोजना का एक मुख्य हिस्सा है, क्योंकि किसी भी स्तर पर आप अपनी मौजूदा Magento परियोजना में अपनी कार्यक्षमता / मॉड्यूल को एकीकृत करना चाहते हैं।
डेवलपर्स को पहली चीज को अक्षम करना चाहिए सिस्टम कैश है। अन्यथा विकास एक दर्द बन जाएगा क्योंकि किसी भी परिवर्तन के लिए एक फ्लश की आवश्यकता होगी। Magento के व्यवस्थापक पैनल से: System > Cache Management > Select All > Actions : Disable.
नेविगेट System > Cache Management > Select All > Actions : Disable.
नया मॉड्यूल बनाने के लिए निम्नलिखित गाइड का उपयोग करें:
app/code/local/
- नामकरण सम्मेलनों में एक फ़ोल्डर बनाएं आमतौर पर आपकी कंपनी का नाम लेते हैं जैसेapp/code/local/<YOUR_COMPANY>
।अब हमारे पास अपने मॉड्यूल के लिए एक कस्टम स्थान है। एक और निर्देशिका बनाएं, इसे उस तरह के मॉड्यूल से संबंधित कुछ कॉल करें, जैसे आप ऐप / कोड / स्थानीय / <your_COMPANY> / HelloWorld / - "HelloWorld" बनाना चाहते हैं, जिसे मैं इस मॉड्यूल कहूंगा।
इस निर्देशिका को
config.xml
आवश्यकता है इसलिए Magento इसे एक नए मॉड्यूल के रूप में पहचानता है।etc
नाम का एक और फ़ोल्डर बनाएँ। Xml फ़ाइल द्वारा कॉन्फ़िगर किया गया है जिसे config.xml कहा जाता है। निर्देशिका कोapp/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml
तरह दिखना चाहिए। यह xml फ़ाइल की संरचना है:<?xml version="1.0" encoding="UTF-8" ?> <config> <modules> <YOUR_COMPANY_HelloWorld> <version>0.0.1</version> </YOUR_COMPANY_HelloWorld> </modules> </config>
अगला, मॉड्यूल को Magento घोषित करने की आवश्यकता है।
app/etc/modules
लिए आगे बढ़ें। एक और XML दस्तावेज बनाएं और इसे अपने टैग के चुने हुए नाम दें:YOUR_COMPANY_HelloWorld
मेरे मामले में। इस दस्तावेज़ में लिखें:<?xml version="1.0" encoding="UTF-8"?> <config> <modules> <YOUR_COMPANY_HelloWorld> <!-- Whether our module is active: true or false --> <active>true</active> <!-- Which code pool to use: core, community or local --> <codePool>local</codePool> </YOUR_COMPANY_HelloWorld> </modules> </config>
Magento के लिए एक नया मॉड्यूल घोषित करने के लिए फिर से कॉन्फ़िगर और मॉड्यूल टैग का उपयोग किया जाता है। सक्रिय डिफ़ॉल्ट मान है जिसे
Admin Panel under System > Configuration > Advanced
में एक्सेस किया जा सकता है।codePool
Magento यह बताती है कि निर्देशिका में देखने के लिए।local
हमारे मामले मेंयह मॉड्यूल अब स्थापित किया गया है, इस प्रकार हमारी एमवीसी संरचना का मॉडल। आपको
System > Configuration > Advanced
तहत व्यवस्थापक पैनल में अपना नया मॉड्यूल देखने में सक्षम होना चाहिए। हालाँकि, यह अभी तक कुछ भी नहीं करता है! आपको हमारी config.xml फ़ाइल पर वापस जाने और XML तत्वों को परिभाषित करने की आवश्यकता होगी।ट्यूटोरियल के साथ निम्नलिखित; हम अपनी साइट के फ्रंटएंड में सभी पेज बनाने और उनमें हेरफेर करने के लिए इनमें से कुछ XML एलिमेंट्स का उपयोग करेंगे।
config.xml
फ़ाइल पर वापस</modules>
टैग के तहत निम्नलिखित लिखें:<global> <!-- adding a new block definition --> <blocks> <!-- A unique short name for our block files --> <helloworld> <!-- the location of our modules block --> <class>YOUR_COMPANY_HelloWorld_Block</class> </helloworld> </blocks> </global> <!-- We are making changes to the frontend --> <frontend> <!-- We are making changes to the layout of the front end --> <layout> <!-- we are adding a new update file --> <updates> <!-- Creating the name of our update and linking it the module --> <helloworld module="YOUR_COMPANY_HelloWorld"> <!-- The name of the layout file we are adding --> <file>helloworld.xml</file> </helloworld> </updates> </layout> </frontend>
जैसा कि आप देख सकते हैं कि हम कोर फ़ाइलों में हेरफेर करने के बजाय लगातार बढ़ रहे हैं।
helloworld
टैग कम केस है क्योंकि यह एक हैंडल को इंगित करेगा, और निरंतरता के लिए हम इसे यथासंभव निकटता से नाम देंगे। इसके बाद हम इसेYOUR_COMPANY_HelloWorld
मॉड्यूल से लिंक करते हैं।हम लेआउट बदल रहे हैं। इसलिए हमें लेआउट डायरेक्टरी में इस हैंडल को बनाने की आवश्यकता है।
app/design/frontend/base/default/layout
। हमने मॉड्यूल कोhelloworld.xml
फ़ाइल देखने के लिए कहा था। इसलिए हमें इसे इस निर्देशिका में बनाना होगा। आप किस का इंतजार कर रहे हैं। कर दो!! और इसके साथ आबाद करें:<?xml version="1.0" encoding="UTF-8"?> <!-- All Layout files begin with this code --> <layout> <!-- this is the layout handle. Default is handled on all pages. We want this module to execute on all pages --> <default> <!-- This is the block we want to bolt onto the existing before_body_end block --> <reference name="before_body_end"> <!-- We define our new block and template to be added to before_body_end --> <block name="helloworld_footer" template="helloworld/footer.phtml" type="helloworld/footer"/> </reference> </default> </layout>
अब आपमें से जिन्हें थोड़ा मैगेंटो का अनुभव है, या जिन्होंने कोई और अधिक उल्लेखनीय मैगेंटो ट्यूटोरियल पढ़ा है, इस तथ्य पर हांफ सकते हैं कि हम आधार / डिफ़ॉल्ट में बदलाव कर रहे हैं क्योंकि यह मैगेंटो कोर फाइलें स्थित हैं। हालाँकि, हम यहाँ किसी भी फाइल को संशोधित नहीं कर रहे हैं, हम नए बना रहे हैं, और इसके अलावा हम अपने फाइल के नाम को "helloworld" के साथ उपसर्ग कर रहे हैं, इसलिए अन्य मॉड्यूल के साथ इस विरोधाभास की बहुत कम संभावना है या मैगेंटो को अपग्रेड करने के साथ किसी भी मुद्दे के कारण भविष्य। खुशी के दिन!
क्योंकि हम सभी पृष्ठों को प्रभावित करना चाहते हैं, हम करने के लिए डिफ़ॉल्ट टैग और यह संदर्भ का उपयोग करें
before_body_end
स्ट्रक्चरल ब्लॉक। यह एक्शन की भूमिका निभाएगा और हमारे MVC संरचना के दृश्य अनुभाग को ट्रिगर करेगा।अब हम समझते हैं कि हम
before_body_end
ब्लॉक परbefore_body_end
रहे हैं। और इसे हमारे कस्टम ब्लॉक से जोड़ना है। इसे एक संदर्भ कहा जाता है और एक हुक है । वर्तमान में हम इसे कुछ भी मौजूदा करने के लिए हुक नहीं कर रहे हैं इसलिए हमें आवश्यक फाइलें बनानी चाहिए।helloworld.xml
हमने टेम्पलेट में एकfooter.phtml
कहा है।app/design/frontend/base/default/template
आगे बढ़ें और एक डायरेक्टरीhelloworld
बनाएं।इस निर्देशिका के अंदर
footer.phtml
फ़ाइल बनाएं और HTML के साथ भरें, यह ट्यूटोरियल हमारी पीएचटीएमएल फ़ाइल के साथ जुड़े कुछ PHP कार्यक्षमता को प्रदर्शित करने के लिए इसे लिखता है:<p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>
अब हमें अपनी ब्लॉक फंक्शनलिटी के साथ टेम्प्लेट को युगल करने के लिए अपनी स्वयं की ब्लॉक ऑब्जेक्ट बनाने की आवश्यकता है। डायरेक्टरी ऐप / कोड / लोकल / Your_COMPANY / HelloWorld / Block / बनाएं और
Footer.php
अंदरFooter.php
फाइलFooter.php
। यह हमारे zeta_layout.xml में "helloworld / footer" प्रकार में संदर्भित किया गया था। इस फ़ाइल को इसके साथ आबाद करें:<?php class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template { public function getDate() { $date = date('Y-m-d'); return urlencode($date); } } ?>
यह वह कार्यक्षमता है जो हमारे कॉल
.phtml
getDate()
को हमारे.phtml
फ़ाइल से.phtml
। हमMage_Core_Block_Template
विस्तार करते हैं।यह कार्यक्षमता अब पूरी हो गई है। अपने होम पेज पर जाकर इसका परीक्षण करें, जहां आपको प्रत्येक पृष्ठ के पाद लेख के भीतर अपने मॉड्यूल को देखना चाहिए!