의 순서 module.xml
는에 영향을 미칩니다 app/etc/config.php
. 이 파일은 실행할 때 업데이트 bin/magento module:enable Vendor_ModuleName
되므로 시퀀스를 추가 / 변경 한 경우 모듈을 비활성화 한 다음 다시 활성화하는 것이 좋습니다. module.xml
파일을 업데이트 하고 캐시를 지우는 것만으로는 충분하지 않습니다 . 개발 중에 Magento가 시퀀스 변경 사항을 볼 수 있도록 전체 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
차례로 상기 로더는 상기 한 방법을 사용한다.