Magento 2: Bố cục tác động trình tự mô-đun có xử lý thứ tự tải XML không?


11

Các <sequence/>thẻ trong module.xmltệp có ảnh hưởng đến thứ tự Magento sẽ xử lý bố cục xử lý các tệp XML không? Nghiên cứu sơ bộ của tôi nói không , nhưng điều đó có vẻ sai nên tôi đang tìm kiếm xác nhận / bằng chứng rằng họ không (bằng chứng == điểm mã nguồn nơi bố trí xử lý đường dẫn tệp XML được tạo và tải)

Nếu các thẻ trình tự không tác động đến bố cục xử lý thứ tự tải tệp XML - có cách nào để thay đổi thứ tự mô-đun mà các tệp này được tải vào không?

Vấn đề cụ thể tôi đang cố gắng giải quyết là nếu tôi đã tải những thứ sau đây trước khi container thực sự được quảng cáo trên trang

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

Barento Magento.

Câu trả lời:


17

Trình tự trong module.xmlcó tác động đến app/etc/config.php. Tệp này được cập nhật khi bạn chạy bin/magento module:enable Vendor_ModuleNamevì vậy nếu bạn đã thêm / thay đổi trình tự, tôi khuyên bạn nên tắt mô-đun của mình và sau đó bật lại. Đang cập nhật của bạn module.xmltập tin và xoá bộ nhớ cache của bạn không đủ ở đây, bạn sẽ cần phải làm đầy đủ disablelại enablechu kỳ để có được Magento thấy các thay đổi chuỗi quá trình phát triển.

Thứ tự sắp xếp các mô-đun trong config.phptệp sau đó được sử dụng cho tất cả các tệp cấu hình khác đang tải theo nhận xét của Anton tại đây.

Các vị trí mã trong bình luận đó là một chút lỗi thời. Đây là mã để sắp xếp thứ tự https://github.com/magento/magento2/blob/2.0.2/lib/iternal/Magento/Framework/Module/ModuleList/Loader.php#L131

Cập nhật 2:

ứng dụng / 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>

tham chiếu trình thu thập tệp bố cục trang trong cùng một 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>

cái mà chúng ta quan tâm pageLayoutFileSourceBaseSortedvẫn nằm trong cùng một 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 sắp xếp như sau

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;
}

nơi moduleListdựa vào Magento\Framework\Module\ModuleListđó lần lượt sử dụng Trình tải được đề cập ở trên.


2
+1 cho thông tin tốt, nhưng điều đó dường như để lại một câu hỏi mở - là bố trí xử lý các tệp XML được coi là tệp cấu hình hoặc chúng là một cái gì đó khác .
Alan Storm

3
Bình luận cho google hậu thế - tải cấu hình không tuân theo các thiết lập trình tự, nhưng trình tự không được thiết lập trên một bộ nhớ cache rõ ràng, đặt nó trên một mô-đun cho phép / vô hiệu hóa.
Alan Storm

1
Cứu người! Tôi đã đưa tôi khá lâu trước khi tôi nhận thấy rằng điều này đã xảy ra.
Anton Evers

Và còn bố cục-xml trong chủ đề (ứng dụng / thiết kế / AwesomeTheme / mặc định / ..? Tất cả những bố cục-xml này có được hợp nhất không Sau de module trong các nhà cung cấp và các địa điểm ứng dụng / mã, theo thứ tự như đã giải thích hereabove?
Klaas van der Weij
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.