वहाँ एक स्थानीय विषय लेआउट XML फ़ाइल है जो local.xml के अलावा अन्य है?


14

मैंने निम्नलिखित फ़ाइल बनाकर और संपादित करके एक थीम बनाई है:

frontend/mypackage/default/layout/local.xml

मेरे पास एक स्टोर व्यू "साइट 1" है, और मैं "मायपैकेज" के डिफ़ॉल्ट लोकल.एक्सएमएल पर अपवाद बनाना चाहता हूं, इसलिए मैंने यह फाइल बनाई:

frontend/mypackage/site1/layout/local.xml

हालाँकि, जैसे ही मैं यह फ़ाइल बनाता हूँ, Magento डिफ़ॉल्ट रूप से स्थानीय .xml परिवर्तन को छोड़ देता है।

मैं Magento को डिफ़ॉल्ट से local.xml का उपयोग करने के लिए कैसे कहूं और साइट 1 के local.xml में परिवर्तन को इसमें जोड़ दूं?


बिल्कुल नहीं। माफ़ करना। वैसे अच्छा सवाल है।
user487772

मैं ठीक इसी परिदृश्य का सामना कर रहा हूं। मुझे डिफ़ॉल्ट थीम से local.xml का विस्तार करना था, इसे पूरी तरह से बदलना नहीं था। यह बहुत बुरा है यह पूरी तरह से चयनित उप-थीम के साथ बदल देता है।
एक्सल

वहाँ एक default.xml की तरह कुछ भी नहीं है? या क्या हम Magento के कोर कोड को हैक कर सकते हैं जो xml-files को ट्रेस करता है, एक default.xml के लिए भी जाँच कर सकता है?
जेरार्ड निजबेर

जवाबों:


7

Magento 1.9 के बाद से आप etc/theme.xmlइस तरह से कस्टम लेआउट अपडेट जोड़ सकते हैं :

<theme>
    <layout>
        <updates>
            <my_theme>
                <file>my_theme.xml</file>
            </my_theme>
        </updates>
    </layout>
</theme>

यदि आप अपने थीम विशिष्ट लेआउट का उपयोग करने के बजाय local.xmlइसे परिभाषित करते हैं , तो बाल विषय में एक और अपडेट जोड़ना आसान है।

दुर्भाग्य से, एक ही समस्या theme.xml के साथ जाती है कि आपके वास्तविक विषय से केवल एक का उपयोग किया जाता है, न कि मूल विषयों से। लेकिन बहुत कम नकल होती है।

theme.xmlबच्चे के विषय के लिए उदाहरण :

<theme>
    <layout>
        <updates>
            <my_theme>
                <file>my_theme.xml</file>
            </my_theme>
            <my_child_theme>
                <file>my_child_theme.xml</file>
            </my_child_theme>
        </updates>
    </layout>
</theme>

स्रोत और अधिक जानकारी: http://alanstorm.com/magento_infinite_fallback_theme_xml


5

Magento अन्य local.xml फ़ाइलों से स्थानीय। Xml परिवर्तनों को मर्ज नहीं करता है। जिस तरह से Magento की थीम फ़ॉलबैक काम करती है, वह यह है कि वर्तमान थीम / पैकेज में मिली किसी भी फ़ाइल को पसंद किया जाएगा और किसी अन्य थीम / पैकेज फ़ाइल के समान उपयोग किया जाएगा।

इस तरह आप एक मर्ज किए गए ओवरराइड नहीं बना सकते। यह Magento 2 में संभव होगा, लेकिन Magento 1.x में संभव नहीं है।

दुर्भाग्य से आपको इसे डिफ़ॉल्ट से अपने स्थानीय विषय पर कॉपी करना होगा और वहां अपने संशोधन करने होंगे।

शुभकामनाएँ।


2
+1। यह निश्चित रूप से प्रोग्रामेटिक रूप से हासिल किया जा सकता है लेकिन निश्चित रूप से एक प्रयास के योग्य नहीं होगा।
user487772

3

फिल बिल्कुल सही है लेकिन सैद्धांतिक रूप से एक वर्कअराउंड है (हालांकि यह सुंदर नहीं है)।

आप एक कस्टम मॉड्यूल बना सकते हैं जो लेआउट अपडेट पेश करेगा। फिर मॉड्यूल में आप जांच सकते हैं कि स्टोर दृश्य वह नहीं है जो आवश्यक है और इस लेआउट अपडेट को हटा दें।

इस दृष्टिकोण के बारे में बुरी बात यह है कि आप स्टोर दृश्य को हार्डकोड करेंगे। और कुल मिलाकर यह सुंदर नहीं लगता है।

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