इसलिए मैंने वक़्त गुज़ारने में घंटों बिताए हैं, पढ़ना, ect का अध्ययन करना, लेकिन किसी ने भी (एलन स्टॉर्म नहीं!) ने मुझे इस बारे में बताया है। ऐसा लगता है कि संपूर्ण इंटरनेट जेएस या सीएसएस को Magento 2 के एक विशेष पृष्ठ में जोड़ने में रुचि रखता है , लेकिन जो मैं देख रहा हूं वह एक विशेष ब्लॉक में JS / CSS जोड़ रहा है ।
तो, यहाँ संक्षेप में मेरा सवाल है:
जेएस (और इसके अतिरिक्त सीएसएस) को किसी विशेष ब्लॉक में जोड़ने का सबसे अच्छा तरीका क्या है , ताकि ब्लॉक पेज पर मौजूद हो (*) जेएस / सीएसएस लोड हो, अगर ब्लॉक नहीं है, तो कोई सीएसएस / जेएस नहीं है? ?
* इसका मतलब यह है कि किसी भी ब्लॉक को लेआउट /xml के माध्यम से एक पृष्ठ / टेम्पलेट पर, मेरे मॉड्यूल से एक कस्टम पृष्ठ पर, एक ब्लॉक / पृष्ठ के tottml विधि के माध्यम से या सबसे महत्वपूर्ण रूप से एक वर्ग के WYSIYG में एम्बेडेड ब्लॉक में सेट किया जा सकता है / उत्पाद विवरण / सीएमएस ब्लॉक / सीएमएस पृष्ठ।
मैंने एलन के महान लेखों (इस आदमी को फिर से !!) के अन्य लेखों का उल्लेख करने के लिए नहीं पढ़ा है , लेकिन मुझे लगता है कि हर कोई एक पृष्ठ, एक विशिष्ट पृष्ठ में जोड़ना चाहता है, जहां कभी भी नहीं। ब्लॉक का उपयोग किया जाता है।
मुझे लगता है कि मैं विभिन्न तकनीकों से परिचित हूं, हालांकि मुझे यहां कुछ याद आ रहा है, इसलिए मैं समुदाय से एक सहमति चाहता हूं, साथ ही साथ सभी फ्रंट एंडर्स के लिए साइन पोस्ट का एक सा हिस्सा पूरी तरह से स्टैक्ड देवों के लिए देख रहा हूं। इसी तरह के सवाल और मैं हूँ के रूप में विकल्पों की ओर इशारा करते हुए।
इससे पहले, मैगेंटो 1 में, मैं ब्लॉक कंस्ट्रक्टर को देखता हूं, लेआउट प्राप्त करता हूं, सिर संदर्भ प्राप्त करता हूं और वहां AddJs / addCss कॉल करता हूं, या यदि संभव हो तो लेआउट में तरीकों का उपयोग करें। xml। इससे जेएस को ब्लॉक कंस्ट्रक्टर पर रिसोर्स सूची में "जोड़ा" गया (थीम स्तर से पहले हेड ब्लॉक का उत्पादन होगा)। लेकिन यह अब संभव नहीं लगता।
मैंने जेएस / सीएसएस को जोड़ने के तरीके के बारे में पढ़ा है (यह एक सरल "मैं कैसे नहीं कर सकता हूं ???" यह अधिक सहमति है "सही / मैग 2 तरीका क्या है ???") और इनसे परिचित हूं तकनीकें:
<head></head>
रूट तत्वों का उपयोग करके /view/ Isareaacing/layout/ Isdefault/page_idades.xml तकनीक- एक जोड़ा जा रहा है सिर अगर मेरे ब्लॉक भरी हुई है के बारे में तर्क के कुछ प्रकार के साथ, मेरे मॉड्यूल के लिए ब्लॉक, head.additional में appened
- पेज / टेम्पलेट के कस्ट्रेक्टर से इंजेक्ट करने के लिए \ Asset \ GroupedCollection और \ Asset \ Repository ऑब्जेक्ट्स का उपयोग करना (यह ब्लॉक के साथ ऑर्क नहीं लगता है), संभावित रूप से लोडिंग का क्रम ??
- आवश्यकताएँ का उपयोग करना और मेरे मॉड्यूल के लिए एक आवश्यकताJJ कॉन्फ़िगर करना
क्या मुझे कुछ याद आया ??
एक का मानना है कि सही तरीका जरुरतमंद पुस्तकालय का उपयोग करना होगा, और require("my_module", function(){ ... })
इनलाइन स्क्रिप्ट में सिंटैक्स के साथ एक्स-मैगेंटो-इनिट विशेषताएँ या केवल एक स्क्रिप्ट। लेकिन यह मुझे klunky लगता है? मुझे स्क्रिप्ट लोड करने के लिए स्क्रिप्ट सेट अप करना होगा, मुझे अपने जेएस के कम से कम कुछ इनलाइन करने के लिए मजबूर होना पड़ता है, हालांकि यह "यहां मेरे ब्लॉक, अब मुझे कुछ जेएस की आवश्यकता है" कहने का सबसे सरल तरीका लगता है, इसे मेरे phtml में पॉपिंग करके।
लेकिन मैं वास्तव में PHP के माध्यम से ऐसा करने में सक्षम होना चाहूंगा, एक बैकएंड / स्टैक प्रोग्रामर के रूप में मैं आदर्श रूप से जेएस को दूर करना चाहूंगा और (आदर्श रूप में) अपने फ्रंट एंड टीम को यह लिखने की अनुमति दूंगा जैसा वे चाहते हैं। संक्षेप में लोडिंग का ख्याल रखें (बैक एंड देव टू फ्रॉन्ड एंड देव "एफ़टीएमएल, यदि आप चाहें तो थीम में ओवरराइड करें, इसी तरह जेएस फाइल, उसके आश्रित कामेच्छा और ब्लॉक के लिए सीएसएस को हायर करता है)।
यह __construct
एसेट सिस्टम पर इंजेक्ट डिपेंडेंसी के साथ विधि का सुझाव देता है। लेकिन मुझे यह काम करने के लिए नहीं मिल सकता है, यह एलन स्टॉर्म के त्वरित लेख में इसकी पुष्टि की जा रही है: मैगेंटो क्विकिज़: मैगेंटो 2: फ्रंटेंड एसेट फाइलें जोड़ना
साइन ऑफ पर ध्यान दें "ब्लॉक बनाने का कोई भी विचार जो उनके सामने अपनी संपत्तियों को ले जाता है वह खिड़की से बाहर है।" ... बुमेर :(
पढ़ने और विचार करने के लिए समय निकालने के लिए धन्यवाद दोस्तों । मैं आपकी प्रतिक्रियाओं को सुनने के लिए उत्सुक हूं!
PS> जाहिर तौर पर यह StackExchange है, इसलिए मैं उत्तर को सर्वश्रेष्ठ पाठ्यक्रम के रूप में चिह्नित करूँगा कि मैं क्या हासिल करने की कोशिश कर रहा हूं (विशिष्ट संसाधन लोड हो रहा है) हालांकि मैं किसी भी और सभी उत्तरों के नीचे दिए गए विवरणों के रूप में भी सूचीबद्ध करूंगा। या तो चर्चा में जोड़ें या एक ठोस समाधान सुझाएं!