Magento 2: क्या मॉड्यूल अनुक्रम प्रभाव लेआउट एक्सएमएल लोड हो रहा है आदेश?


11

क्या फाइलों <sequence/>में टैग module.xmlऑर्डर को प्रभावित करते हैं मैगेंटो लेआउट की प्रक्रिया को एक्सएमएल फाइलों में संभालेगा? मेरा प्रारंभिक शोध कहता है कि नहीं , लेकिन यह गलत लगता है इसलिए मैं पुष्टि / सबूत की तलाश कर रहा हूं कि वे (प्रमाण == स्रोत कोड बिंदु जहां लेआउट हैंडल XML फ़ाइल पथ उत्पन्न और लोड किए गए हैं)

यदि अनुक्रम टैग लेआउट को प्रभावित नहीं करते हैं तो XML फ़ाइल लोडिंग ऑर्डर को हैंडल करें - क्या इन फ़ाइलों को लोड करने के लिए मॉड्यूल ऑर्डर को बदलने का कोई तरीका है?

विशिष्ट समस्या जिसे मैं हल करने की कोशिश कर रहा हूं, यदि मेरे पास कंटेनर लोड होने से पहले वास्तव में पृष्ठ पर एडेड है

    <referenceContainer name="product.info.media">    
        <action method="unsetChild">
            <argument name="block" xsi:type="string">product.info.media.image</argument>
        </action>
    </referenceContainer>

मैगेंटो बारफ्स।

जवाबों:


17

अनुक्रम module.xmlपर प्रभाव पड़ता है app/etc/config.php। जब आप चलाते हैं bin/magento module:enable Vendor_ModuleNameतो यह फ़ाइल अपडेट हो जाती है यदि आपने अनुक्रम जोड़ा / बदला है तो मैं आपके मॉड्यूल को अक्षम करने और फिर इसे सक्षम करने का सुझाव दूंगा। अपनी module.xmlफ़ाइल को अपडेट करना और अपना कैश साफ़ करना यहाँ पर्याप्त नहीं है, आपको विकास के दौरान अनुक्रम परिवर्तन देखने के लिए Magento प्राप्त करने के लिए एक पूर्ण disableपुन: enableचक्र करने की आवश्यकता होगी ।

config.phpफ़ाइल में मॉड्यूल के क्रम को तब एंटोन की टिप्पणी के अनुसार अन्य सभी कॉन्फ़िगरेशन फ़ाइल लोड करने के लिए उपयोग किया जाता है।

उस टिप्पणी में कोड स्थान थोड़ा पुराना है। यह अनुक्रम क्रमबद्ध है https://github.com/magento/magento2/blob/2.0.2/lib/internal/Magento/Framework/Module/ModuleList/Loader.php#L131

अपडेट 2:

एप्लिकेशन / etc / di.xml

<type name="Magento\Framework\View\Model\Layout\Merge">
    <arguments>
        <argument name="fileSource" xsi:type="object">Magento\Framework\View\Layout\File\Collector\Aggregated\Proxy</argument>
        <argument name="pageLayoutFileSource" xsi:type="object">pageLayoutFileCollectorAggregated</argument>
        <argument name="cache" xsi:type="object">Magento\Framework\App\Cache\Type\Layout</argument>
    </arguments>
</type>

जो एक ही di.xml में पेज लेआउट फ़ाइल कलेक्टर का संदर्भ देता है

<virtualType name="pageLayoutFileCollectorAggregated" type="Magento\Framework\View\Layout\File\Collector\Aggregated">
    <arguments>
        <argument name="baseFiles" xsi:type="object">pageLayoutFileSourceBaseSorted</argument>
        <argument name="themeFiles" xsi:type="object">pageLayoutFileSourceThemeSorted</argument>
        <argument name="overrideBaseFiles" xsi:type="object">pageLayoutFileSourceOverrideBaseSorted</argument>
        <argument name="overrideThemeFiles" xsi:type="object">pageLayoutFileSourceOverrideThemeSorted</argument>
    </arguments>
</virtualType>

जो हमें रुचिकर लगता है, वह pageLayoutFileSourceBaseSortedअभी भी उसी di.xml में है

<virtualType name="pageLayoutFileSourceBaseSorted" type="Magento\Framework\View\File\Collector\Decorator\ModuleDependency">
    <arguments>
        <argument name="subject" xsi:type="object">pageLayoutFileSourceBaseFiltered</argument>
    </arguments>
</virtualType>

Magento\Framework\View\File\Collector\Decorator\ModuleDependency निम्नलिखित छँटाई करता है

protected function getModulePriority($moduleName)
{
    if ($this->orderedModules === null) {
        $this->orderedModules = $this->moduleList->getNames();
    }
    $result = array_search($moduleName, $this->orderedModules);
    // Assume unknown modules have the same priority, distinctive from known modules
    if ($result === false) {
        return -1;
    }
    return $result;
}

जहां moduleListपर आधारित है, Magento\Framework\Module\ModuleListजो ऊपर दिए गए लोडर का उपयोग करता है।


2
+1 अच्छी जानकारी के लिए, लेकिन ऐसा लगता है कि एक खुला प्रश्न छोड़ना है - क्या कॉन्फ़िगरेशन फ़ाइलों पर विचार करने वाली XML फाइलें हैं, या वे कुछ और हैं
एलन स्टॉर्म

3
Google पोस्टरिटी के लिए टिप्पणी करना - कॉन्फ़िगरेशन लोड करना अनुक्रम सेटिंग्स का पालन करता है , लेकिन अनुक्रम कैश पर सेट नहीं है, इसका मॉड्यूल सक्षम / अक्षम पर सेट है।
एलन स्टॉर्म

1
जीवन रक्षक! मुझे लगता है कि यह हो रहा था इससे पहले कि मैं काफी समय ले लिया।
एंटोन एवर्स

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