Magento 2: การเรียงลำดับผลกระทบของ Module Module จัดการกับการโหลดคำสั่ง XML หรือไม่?


11

อย่า<sequence/>แท็กในmodule.xmlไฟล์ส่งผลกระทบต่อการสั่งซื้อวีโอไอพีจะประมวลผลไฟล์รูปแบบ XML จับอะไรบ้าง? การวิจัยเบื้องต้นของฉันบอกว่าไม่แต่ดูเหมือนผิดดังนั้นฉันกำลังมองหาการยืนยัน / พิสูจน์ว่าพวกเขาไม่ได้ (หลักฐาน == รหัสแหล่งที่มาจุดที่รูปแบบการจัดการเส้นทางไฟล์ XML จะถูกสร้างและโหลด)

หากแท็กลำดับไม่ส่งผลกระทบต่อการจัดการลำดับการโหลดไฟล์ XML - มีวิธีการเปลี่ยนลำดับโมดูลหรือไม่ไฟล์เหล่านี้ถูกโหลดเข้ามาหรือไม่?

ปัญหาเฉพาะที่ฉันพยายามแก้ไขคือถ้าฉันโหลดสิ่งต่อไปนี้ก่อนที่จะลงโฆษณาในคอนเทนเนอร์จริง ๆ

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

วีโอไอพี barfs

คำตอบ:


17

ในลำดับมีผลกระทบต่อmodule.xml app/etc/config.phpไฟล์นี้ได้รับการปรับปรุงเมื่อคุณเรียกใช้bin/magento module:enable Vendor_ModuleNameดังนั้นหากคุณเพิ่ม / เปลี่ยนแปลงลำดับฉันขอแนะนำให้ปิดการใช้งานโมดูลของคุณแล้วเปิดใช้งานอีกครั้ง การอัปเดตของคุณmodule.xmlไฟล์และการล้างแคชของคุณไม่เพียงพอที่นี่คุณจะต้องทำเต็มรูปแบบdisableอีกenableรอบจะได้รับวีโอไอพีเพื่อดูการเปลี่ยนแปลงลำดับในระหว่างการพัฒนา

ลำดับการเรียงของโมดูลในconfig.phpไฟล์นั้นจะถูกใช้สำหรับการโหลดไฟล์การกำหนดค่าอื่น ๆ ทั้งหมดตามความคิดเห็นของ Anton ที่นี่

รหัสสถานที่ในความคิดเห็นนั้นล้าสมัยไปแล้ว นี่คือรหัสสำหรับการเรียงลำดับhttps://github.com/magento/magento2/blob/2.0.2/lib/internal/Magento/Framework/Module/ModuleList/Loader.php#L131

อัปเดต 2:

app / 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 จับถือว่าแฟ้มการกำหนดค่าหรือว่าพวกเขาอย่างอื่น
Alan Storm

3
การแสดงความคิดเห็นสำหรับ google posterity - การโหลดการกำหนดค่าจะเป็นไปตามการตั้งค่าลำดับ แต่ลำดับนั้นไม่ได้ตั้งค่าไว้ในแคชที่ชัดเจนการตั้งค่าบนโมดูลเปิดใช้งาน / ปิดใช้งาน
Alan Storm

1
ช่วยชีวิต! ฉันใช้เวลาพอสมควรก่อนที่ฉันจะสังเกตเห็นว่าสิ่งนี้กำลังเกิดขึ้น
Anton Evers

และสิ่งที่เกี่ยวกับ layout-xml ในชุดรูปแบบ (app / design / AwesomeTheme / default / .. ทั้งหมดนี้ layout-xml ถูกผสานหลังจากโมดูล de ในผู้ขายและตำแหน่งแอพ / รหัสในลำดับเดียวกับที่อธิบายไว้ที่นี่หรือไม่
Klaas van der Weij
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.