लेआउट XML का गलत लोडिंग ऑर्डर


15

जब मैं व्यवस्थापक क्षेत्र (समुदाय या स्थानीय कोड पूल में) के लिए एक लेआउट फ़ाइल बनाता हूं, तो कभी-कभी Magento उस लेआउट xml को व्यवस्थापक html लेआउट लेआउट xml लोड होने से पहले लोड कर रहा है। इसका प्रभाव यह है कि संदर्भ कॉलों को छोड़ दिया जाता है क्योंकि उन्हें लागू करने के लिए कोई ब्लॉक नहीं बनाया गया है।

जाहिर है, कैशिंग यहां एक हिस्सा नहीं खेल रहे हैं। मैंने मॉड्यूल घोषणा फ़ाइल में नोड में जोड़ा Mage_Adminhtmlहै <depends/>

क्या यह एक ऐसा मुद्दा है जो आपने पहले भी देखा है? यदि हां, तो इसका समाधान कैसे किया जाता है?

मैंने इस मुद्दे के माध्यम से कई बार काम किया है, और हर बार एक समाधान के लिए मिलता है, लेकिन मैं यह पता नहीं लगा सकता कि यह पहली जगह में क्या होता है।

जवाबों:


16

बिना ठोस उदाहरण के कहना मुश्किल है, लेकिन मुझे संदेह है कि आप फ़ाइल ऑर्डर बनाम हैंडल ऑर्डर समस्या में चल रहे हैं।

विशेष रूप से, Magento local.xmlपिछले क्रम में निपटने के साथ मॉड्यूल क्रम में अपनी XML फ़ाइलों को लोड करता है । यहाँ एक सामान्य सूची है, क्रम में

frontend/base/default/layout/core.xml
frontend/rwd/default/layout/page.xml
frontend/rwd/default/layout/directory.xml
frontend/rwd/default/layout/cms.xml
frontend/rwd/default/layout/customer.xml
frontend/rwd/default/layout/catalog.xml
frontend/rwd/default/layout/catalog_msrp.xml
frontend/rwd/default/layout/catalogsearch.xml
frontend/base/default/layout/payment.xml
frontend/rwd/default/layout/sales.xml
frontend/base/default/layout/sales/billing_agreement.xml
frontend/base/default/layout/sales/recurring_profile.xml
frontend/base/default/layout/cataloginventory.xml
frontend/base/default/layout/shipping.xml
frontend/rwd/default/layout/checkout.xml
frontend/rwd/default/layout/paypal.xml
frontend/base/default/layout/bml.xml
frontend/rwd/default/layout/poll.xml
frontend/rwd/default/layout/review.xml
frontend/rwd/default/layout/tag.xml
frontend/base/default/layout/reports.xml
frontend/base/default/layout/googleanalytics.xml
frontend/rwd/default/layout/wishlist.xml
frontend/base/default/layout/paypaluk.xml
frontend/base/default/layout/giftmessage.xml
frontend/rwd/default/layout/contacts.xml
frontend/base/default/layout/sendfriend.xml
frontend/rwd/default/layout/rss.xml
frontend/base/default/layout/productalert.xml
frontend/rwd/default/layout/oauth.xml
frontend/base/default/layout/authorizenet.xml
frontend/rwd/default/layout/bundle.xml
frontend/rwd/default/layout/captcha.xml
frontend/base/default/layout/centinel.xml
frontend/rwd/default/layout/newsletter.xml
frontend/rwd/default/layout/downloadable.xml
frontend/base/default/layout/pagecache.xml
frontend/rwd/default/layout/persistent.xml
frontend/base/default/layout/weee.xml
frontend/base/default/layout/xmlconnect.xml
frontend/base/default/layout/moneybookers.xml
frontend/base/default/layout/pulsestorm_checkoutstep.xml
frontend/rwd/default/layout/local.xml

ऑर्डर लेआउट एक्सएमएल फाइलें डिक्टेट में लोड होती हैं ऑर्डर लेआउट एक्सएमएल नियम लागू होते हैं -  प्रति हैंडल । यह अंतिम भाग है जो लोगों को यात्राएं कराता है। हैंडल उन शीर्ष स्तर XML नोड्स हैं।

<config>
    <handle_name>
    </handle_name>
</config>

हैंडल लेआउट के लिए घटनाओं की तरह हैं - प्रत्येक पृष्ठ अनुरोध के लिए Magento कई हैंडल जारी करता है। आप कॉमर्स बग का उपयोग यह देखने के लिए कर सकते हैं कि किसी विशेष पेज अनुरोध के लिए कौन से हैंडल जारी किए गए हैं

यहाँ छवि विवरण दर्ज करें

उन छवियों के लिए जिन्हें बंद कर दिया गया था, उस विशेष पृष्ठ अनुरोध के लिए जारी किए गए हैंडल थे

<default />
<catalog_category_layered_nochildren />
<STORE_default />
<THEME_frontend_rwd_default />
<catalog_category_view />
<catalog_category_default />
<CATEGORY_3 />

इसका मतलब यह है कि, Magento हर defaultXML चंक को चलाएगा : पहले core.xmlफ़ाइल के लिए, फिर फ़ाइल के defaultलिए हर चंक page.xml, नीचे सभी तरह से local.xml

फिर, Magento हर catalog_category_layered_nochildrenXML चंक को चलाएगा : पहले core.xmlफ़ाइल के लिए, फिर page.xmlफ़ाइल के लिए, नीचे सभी तरह से local.xml

यह प्रत्येक हैंडल के लिए जारी है।

इसका मतलब क्या है, अगर आपके पास हैंडल में local.xmlअंदर थोड़ा सा भी अपडेट XML है default, तो यह उस लेआउट के थोड़ा सा अपडेट होने से पहले चलेगा, core.xmlजो catalog_category_layered_nochildrenहैंडल के अंदर है । यह अब तक, लेआउट एक्सएमएल प्रणाली में सबसे अधिक भ्रम का कारण बनता है, विशेष रूप से क्योंकि इसमें पारंपरिक ज्ञान का एक सा चल रहा है जो कहता है कि "local.xml लोड पिछले"।

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

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