मैं एक। पार्टी फ़ाइल से .php, .js, .html, .css फ़ाइलों को कहां डालूं जो मेरे द्वारा विकसित किए गए एक्सटेंशन के साथ हस्तक्षेप करती हैं?


10

मान लें कि मैं एक Magento एक्सटेंशन विकसित करना चाहता हूं, जो कहती है, एक ओपन सोर्स चार्टिंग पैकेज या एक छवि गैलरी या जो कुछ भी एक्सटेंशन का हिस्सा नहीं है। जब डाउनलोड किया गया (विस्तार से अलग) तो 3 पार्टी का काम अपने आप में एकल हो जाता है। अपने सभी .php .js, .html और .css के साथ .zip करें।

क्या मैं उस गरीब साइट-स्वामी पर रखता हूं जो 3 जी पार्टी लिब के साथ एक साथ मेरा एक्सटेंशन इंस्टॉल करना चाहता है, मूल 3 पार्टी को खींचने का बोझ। उन्हें अलग कर दें और उन्हें .js / js, .php in / lib में डालें। सीएसएस / त्वचा आदि में?

या क्या किसी भी 3 पार्टी के लिए आम तौर पर स्वीकार किया गया "डंपिंग ग्राउंड" है। ज़िप जहां एक सुविधाजनक रूप से आईएस के रूप में डाउनलोड को अनज़िप कर सकता है और इसके साथ किया जा सकता है?

जवाबों:


6

मुझे नहीं पता कि इस सवाल का एक भी सही उत्तर है क्योंकि यह वास्तव में उस कोड पर निर्भर करता है जिसमें आप शामिल हैं।

यदि आप 3rd पार्टी php लाइब्रेरी को शामिल करना चाहते हैं, जैसे कि बाहरी API के लिए sdk, तो इसे आपके Magento प्रोजेक्ट की / lib डायरेक्टरी में डाला जाना चाहिए ताकि यह आपके एक्सटेंशन द्वारा इसे शामिल किया जा सके जो इसका उपभोग करता है।

हालाँकि आप उदाहरण के तौर पर js और css का भी उपयोग कर रहे हैं। यदि आप अपने एक्सटेंशन के तीसरे पक्ष से js का उपयोग आउटपुट कोड में कर रहे हैं, उदाहरण के लिए, कुछ js जो एक कैनवास चार्ट को प्रस्तुत करते हैं, तो यह संभावना से अधिक / js निर्देशिका में रखा जाना चाहिए ताकि यह आपके एक्सटेंशन द्वारा शामिल किया जा सके। सीएसएस के लिए, इसे संभवतः आधार / डिफ़ॉल्ट थीम और त्वचा की डायरियों में जोड़ा जाना चाहिए।

Unfortunatley Magento 1 विस्तार प्रणाली इस तरह की चीज़ों को वितरित करना आसान नहीं बनाती है क्योंकि फाइलें पूरे प्रोजेक्ट के माध्यम से एक ही डायर में निहित स्व के बजाय बाहर फैल जाती हैं। Magento संगीतकार इंस्टॉलर और मोडमैन जैसे उपकरण कुछ हद तक इसके साथ मदद करते हैं।


4

जब डाउनलोड (एक्सटेंशन से अलग) डाउनलोड किया जाता है, तो 3 पार्टी एक्सटेंशन अपने एकल में आता है। अपने सभी .php .js, .html और .css के साथ .zip करें।

मैं हमेशा स्रोत से ही दिव्य सम्मेलनों का प्रशंसक रहा हूं, हालांकि यह Magento 1 के साथ अस्पष्ट हो सकता है।

बशर्ते थर्ड-पार्टी लाइब्रेरी लाइसेंस बंडलिंग के लिए अनुमति देता है, आपको इसे अनपैक करना चाहिए और इसे अपने एक्सटेंशन के साथ रीपैकेज करना चाहिए, क्योंकि एक अलग उप-लाइब्रेरी को अनपैक करने के लिए कोई मूल तंत्र नहीं है (मैं गलत हो सकता है)।

ये संपत्तियाँ कहाँ जाती हैं यह फाइलों के प्रकार और आंतरिक संगठन पर निर्भर करता है। शुद्ध जेएस पुस्तकालयों के तहत जाना चाहिए ./js/। सर्वर-साइड निष्पादित की जाने वाली फाइलें निम्न हैं ./lib/, यह देखते हुए कि किसी भी PHP वर्ग के तहत ./lib/ऑटोलैड किया जा सकता है (अनिवार्य रूप से PSR-0) ऑटोलॉड योजना (रेफरी। Zend फ्रेमवर्क 1 ऑटोलॉड कन्वेंशन)। ./lib/क्लाइंट (रेफरी ./lib/.htaccess) के माध्यम से पहुँचा जा सकता है (होना चाहिए) के तहत कुछ भी नहीं ।


धन्यवाद बेन। आपका उत्तर समझ में आता है, लेकिन इसका मतलब यह है कि साइट-मालिक आसानी से मैगेंटो एक्सटेंशन के स्वतंत्र रूप से 3 जी पार्टी लिब को उन्नत संस्करण में अपग्रेड नहीं कर सकते हैं, जो इसे इंटरफेस करता है। जब तक समझ में न आए कि यह सब एक साथ कैसे लटका हुआ है और तब भी सभी बिट्स को सही स्लॉट में रखने के लिए दर्द होता है। यह इस अर्थ में एक वरदान है कि विस्तार और तीसरी पार्टी के संस्करण के संस्करण लगातार बने हुए हैं, लेकिन एक दर्द जब तीसरे पक्ष के नए संस्करण बग फिक्स प्रदान करते हैं और पीछे की संगतता जारी रखते हुए नई सुविधाएँ प्रदान करते हैं।
फ्रिस

1
"यह इस अर्थ में एक वरदान है कि विस्तार और तीसरे पक्ष के काम के संस्करण लगातार बने हुए हैं ..." यह टिकट है! उनके बदलाव आपके बदलाव हैं। यह Magento 2 में संगीतकार के लिए धन्यवाद में थोड़ा आसान है।
बेंचमार्क

1

इसलिए आप एक एक्सटेंशन बनाना चाहते हैं और इसके निर्माण के लिए आप बाहरी संसाधन / पैकेज का उपयोग कर रहे हैं। मेरी राय में, आपने अपने विस्तार में जो भी पैकेज का उपयोग किया है, आपके विस्तार को मैगेंटो सर्वोत्तम प्रथाओं का पालन करना चाहिए। इसका मतलब है कि आपको बाहरी संसाधन से सभी जेएस, सीएसएस, छवियों को अलग करना चाहिए और base\defaultथीम पैकेज निर्देशिकाओं में जगह चाहिए ।

यानी थर्ड पार्टी पैकेज संसाधनों को रखने के लिए ऐसा कोई अनूठा स्थान मौजूद नहीं है। अंतत: जब आप एक ठंडा एक्सटेंशन देते हैं, तो आपके एक्सटेंशन से संबंधित सभी js, css और छवियों को एक ऐसे स्थान पर रखा जाना चाहिए, जहां एक अन्य डेवलपर सामान्य रूप से देखने वाला हो और जो लगभग मामलों में base/defaultथीम पैकेज हो।

संक्षेप में

आपके सभी एक्सटेंशन js के अंतर्गत आने चाहिए

skin\frontent\base\default\js\[your_extension]\[all_of_your_js_files]
skin\frontent\base\default\css\[your_extension]\[all_of_your_css_files]
skin\frontent\base\default\images\[your_extension]\[all_of_your_images]

//for third parties, you can create an inner directory, to specify it
skin\frontent\base\default\js\[your_extension]\[your_external_resource]\[resource_js_files]
skin\frontent\base\default\css\[your_extension]\[your_external_resource]\[resource_css_files]
skin\frontent\base\default\images\[your_extension]\[your_external_resource]\[resource_image_files]

इस तरह, एक अन्य डेवलपर आसानी से आपके एक्सटेंशन के जेएस, सीएसएस और छवियां (आपके बाहरी संसाधनों के भी) बहुत आसानी से पा सकता है। चूंकि आप अपने एक्सटेंशन नाम निर्देशिका के अंदर बाह्य संसाधन फ़ाइलों को इंगित करने के लिए एक अतिरिक्त उप निर्देशिका का उपयोग कर रहे हैं, यह दूसरों को एक सर्वोत्तम सुराग देगा कि आपका विस्तार कुछ तृतीय पक्ष पैकेजों पर निर्भर है।

इसलिए मैं आपको बाहरी पैकेजों को अलग करने और उन्हें आपके विस्तार का एक हिस्सा बनाने की सलाह देता हूं ताकि एक दूसरे डेवलपर को आसानी से आपकी निर्भरता मिल सके। :-)

EDIT - 1

आपको अपने साइट स्वामी के लिए अपना एक्सटेंशन बोझ नहीं बनाना चाहिए। आप अपने एक्सटेंशन को ठीक से संरेखित करके इस कठिनाई से बच सकते हैं। इसका मतलब है, यदि आप निर्दिष्ट निर्देशिका स्थानों में सभी संबंधित फ़ाइलों को सहेजते हैं, तो सभी साइट स्वामी को क्या करना चाहिए, अपने एक्सटेंशन को पकड़ो और फिर एप्लिकेशन रूट निर्देशिका से अपने एक्सटेंशन को मर्ज करें। यानी अपने विस्तार को ठीक से संरेखित करें। इसे ऐसा दिखना चाहिए।

/app
|_____code\community\Namespace\Module\...
|_____design
|        |_____frontend\base\defalt\...
|        |_____adminhtml\base\defalt\...

/skin
|_____frontend\base\default\js|css|images\[your_extension]\all_theme_related_files
|_____frontend\base\default\js|css|images\[your_extension]\all_theme_related_files

EDIT - 2

यदि कुछ पैकेज हैं, जो सभी मैगनेटो अनुप्रयोगों (जैसे जावास्क्रिप्ट पुस्तकालय, या पीएचपी पैकेज आदि) में साझा करना चाहिए, तो आप उन्हें \libनिर्देशिका में रख सकते हैं ।

यह सच है कि, डुप्लिकेट फ़ाइल मौजूद हो सकती है यदि दो एक्सटेंशन समान संसाधन पैकेज पर भरोसा करते हैं। वे एक ही संसाधन पैकेज के विभिन्न संस्करण का भी उपयोग कर सकते हैं। लेकिन मूल रूप से, आपके एक्सटेंशन को केवल आपके एक्सटेंशन के संसाधन का उपयोग करना चाहिए (और डिफ़ॉल्ट Magento के संसाधनों पर भरोसा कर सकते हैं) और इसे अन्य एक्सटेंशन के संसाधनों पर भरोसा नहीं करना चाहिए, जब तक कि आपका एक्सटेंशन तीसरे पक्ष के एक्सटेंशन का "विस्तारित संस्करण" न हो।


धन्यवाद। आपका उत्तर साइट-स्वामी पक्ष के बजाय, डेवलपर के दृष्टिकोण का पक्षधर है। लेकिन मुझे लगता है कि यह Magento में जिस तरह से है? मैं अन्य CMS'es के बारे में जानता हूं जो तृतीय पक्ष अभिलेखागार / परिवादों को अनज़िप करने के लिए सहमत हुए हैं, सभी फाइलों को एक साथ रखते हुए जिस तरह से मूल में हैं।
फ्रिस

1
हाँ। मुझे पता है कि पैकेज संसाधन को अलग करना निराशाजनक है। Magento यह मांग करता है। इसके लिए कोई आसान तरीका नहीं है। मैगेंटो सर्वोत्तम प्रथाओं का कहना है "आपको सभी js, css, imagesको base\defaultपैकेज में रखना चाहिए "। मेरा एडिट कोड भी देखें
राजीव के टॉमी

हाय राजीव ... "your_extension" के तहत बाहरी संसाधन / lib फ़ाइलों को डालने का एक और परिणाम यह है कि इसे अन्य एक्सटेंशन द्वारा साझा नहीं किया जा सकता है जो संसाधन / lib का उपयोग कर सकते हैं। तो आप एक ही पृष्ठ पर लोड किए गए कई प्रतियाँ, संभवतः अलग-अलग संस्करण के साथ समाप्त करते हैं। आउच!
फ्राइस

कृपया मेरे संपादन देखें
राजीव के टॉमी

0

Magento के अपने पैकेज मैनेजर हैं जिन्हें Magento Connect कहा जाता है। पैकेज को कैसे देखना चाहिए, इसे पूरी तरह समझने के लिए आपको आधिकारिक दस्तावेज से इस गाइड की जांच करनी चाहिए। एक बार संरचना को समझने के बाद आप अपने मॉड्यूल को Magento की स्थापना से पैक कर सकते हैं।


आपके उत्तर के लिए धन्यवाद लेकिन यह काफी नहीं है जो मैं पूछ रहा था। यह मेरे एक्सटेंशन को कैसे पैकेज करना है, इसके बारे में नहीं है, यह मैगेंटो फ़ाइल ट्री में है जहां 3 पार्टी फाइलें डालनी हैं जो कोर या मेरे एक्सटेंशन का हिस्सा नहीं हैं, लेकिन सिस्टम के हिस्से के रूप में शामिल करने की आवश्यकता है। मैं उन फ़ाइलों को डालने के लिए उपयोगकर्ताओं को कहाँ बताऊँ? क्या 3rd पार्टी फ़ाइलों के लिए एक मानक स्थान (या स्पॉट) है?
फ्रिस

यह वास्तव में आपके द्वारा भेजे गए लिंक से संबंधित है। Js और css के पास किसी अन्य एक्सटेंशन फ़ाइल की तरह पैकेज के लिए अपने स्वयं के फ़ोल्डर हैं। Php फाइलें रूट लेबर फोल्डर के अंदर या किसी माड्यूल फोल्डर के अंदर मॉड्यूल फोल्डर के अंदर हो सकती हैं।
मलबपर्धा

ठीक है धन्यवाद। तो आपका उत्तर है: हाँ Magento साइट बिल्डरों को 3rd पार्टी संग्रह को अनज़िप करना होगा, PHP, JS, HTML और CSS भागों को उस संग्रह से बाहर निकालना होगा और उन फाइलों को Magento फ़ाइल ट्री में उपयुक्त स्लॉट में पुनः वितरित करना होगा। साइट बिल्डर को इस प्रयोजन के लिए निर्दिष्ट कुछ सामान्य रूप से सहमत निर्देशिका में पूरी तरह से पूरी तरह से तृतीय पक्ष संग्रह को अनज़िप करने की अनुमति देने के लिए सबसे अच्छा अभ्यास नहीं माना जाता है जहां से संबंधित एक्सटेंशन (ओं) में आवश्यकतानुसार 3 पार्टी फाइलें शामिल होंगी।
फ्रिस

हाँ। आपके द्वारा वर्णित सब कुछ पहले से ही प्रलेखन में वर्णित पैकिंग प्रक्रिया में शामिल है।
मुलपर्धा

वैसे मैंने वह प्रलेखन पढ़ा है, लेकिन यह मेरे प्रश्न के बारे में कुछ नहीं कहता है। यह केवल उन फ़ाइलों के बारे में बात करता है जो आपके द्वारा विकसित किए गए एक्सटेंशन का हिस्सा हैं और पैकेज करना चाहते हैं। यह नहीं कहता है कि 3 पार्टी फाइलों को कहां रखा जाए जो कि विस्तार का हिस्सा नहीं है, जैसे कि कैलेंडर या छवि गैलरी या चार्टिंग पैकेज। आप इन्हें अपने द्वारा विकसित किए जा रहे एक्सटेंशन के साथ पैकेज नहीं करना चाहते हैं, ताकि उन्हें स्वतंत्र रूप से अपडेट किया जा सके। सवाल तो यह है कि तीसरे पक्ष की फाइलें कहां रखी जाए? उन लोगों के लिए सबसे अच्छा अभ्यास दृष्टिकोण क्या है?
फ्रिस

0

मूल रूप से Magento पकड़ करने के लिए अपने आप संरचना का उपयोग करता .php, .phtml, js, css, imagesफ़ाइलें।

Magento एक्सटेंशन डेवलपर के लिए यह बहुत महत्वपूर्ण है कि आप magento तरीके का पालन करें। इस लिंक को देखें

इसलिए,

  1. आपकी .phpफ़ाइलों को app/code/communityफ़ोल्डर में जाना चाहिए
  2. आपका jsफ़ाइलों के लिए जा सकते jsफ़ोल्डर या में skin/frontend or adminhtml/your_theme_pack/your_theme/jsफ़ोल्डर
  3. आपकी cssफाइलें skin/frontend or adminhtml/your_theme_pack/your_theme/cssफोल्डर में जा सकती हैं
  4. आपकी imagesफाइलें skin/frontend or adminhtml/your_theme_pack/your_theme/imagesफोल्डर में जा सकती हैं
  5. आपका 'html files should go toऐप / डिज़ाइन / फ्रंटएंड या एडमिनिस्ट्रेटर / टेम्प्लेट' फोल्डर

PS फ्रंटएंड का मतलब है कि अगर आपका एक्सटेंशन फ्रंट स्टोर के लिए है और अगर आपके एक्सटेंशन में एड्मिनिस्ट्रेशन एरिया है तो adminthml का मतलब है।

Magento में इन फ़ाइलों को रखने के लिए विशिष्ट तरीके हैं, इसलिए आपको उनका पालन करना चाहिए।

मैं यह भी जांच करूंगा कि क्या आपके वांछित / नकल कार्य पहले से ही Magento / zend फ्रेमवर्क में उपलब्ध हैं। उदाहरण के लिए pdf बनाना, ईमेल भेजना, xml पढ़ना आदि पहले से ही magento में निर्मित हैं।

उम्मीद है की यह मदद करेगा।

अपडेट १

अगर आप अपनी फाइलें कहीं रखना चाहते हैं तो आप कहीं भी रख सकते हैं। तुम भी Magento रूट के भीतर नया फ़ोल्डर बना सकते हैं। लेकिन यह Magento के लिए सबसे अच्छा अभ्यास नहीं है, जो उन फ़ाइलों को निष्पादित करते समय आपके सर्वर को लोड करेगा। आप इस https://magentotherightway.com/ को देखना चाहते हैं


लिंक और स्पष्टीकरण के लिए धन्यवाद। लेकिन मैं खुद विस्तार के बारे में नहीं पूछ रहा हूं। मैं इस बारे में पूछ रहा हूं कि तीसरे पक्ष के कोड को एक्सटेंशन में शामिल नहीं करने के लिए कहां रखा जाए। क्या इसके लिए आमतौर पर सहमत स्थान है?
फ्रिस

अगर आप अपनी फाइलें कहीं रखना चाहते हैं तो आप कहीं भी रख सकते हैं। तुम भी Magento रूट के भीतर नया फ़ोल्डर बना सकते हैं। लेकिन यह Magento के लिए सबसे अच्छा अभ्यास नहीं है, जो उन फ़ाइलों को निष्पादित करते समय आपके सर्वर को लोड करेगा। आप इस magentotherightway.com
आदर्श खत्री

वितरित एक्सटेंशन को कोडपूल में कभी भी स्थापित नहीं होना चाहिए local
बॉनमार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.