Shopware 6 插件按什么顺序加载?

Ale*_*lex 3 shopware

是否尊重作曲家依赖链,或者仍然是此处写的安装日期?

Ale*_*lex 7

2022 年 7 月更新插件现在可以定义模板优先级。对于翻译优先级等其他事情,下面仍然适用。


根据2019 年 11 月的更新日志条目,插件按照安装日期的顺序加载。

加载插件的顺序已更改。之前,插件是按 ID 列排序的。由于此处存储的 UUID,顺序是随机的,并且在每次(重新)安装 Shopware 时都会发生变化。

从现在开始,插件将按照安装日期的顺序加载。所以第一个安装的插件是第一个,它在内核启动时初始化。

这是临时解决方案,因为这不会完全解决插件之间的依赖关系问题。已经有一些开放的票证,其目标是改进整个插件加载过程。

在最新修订版(2021年2月25日)中仍然如此,

protected function loadPluginInfos(): void
{
    $sql = <<<SQL
        # dbal-plugin-loader
        SELECT
        [...]
        FROM `plugin`
        ORDER BY `installed_at`;  <---- here the sort order is defined
 SQL;
Run Code Online (Sandbox Code Playgroud)

因此,即使解决方案不是临时的,至少目前已经建立了一致的加载顺序。

备注:当涉及到主题覆盖的优先级时,请参阅如何在 Shopware 6 中进行模板多重继承?从插件覆盖树枝模板

未来:有一个核心问题需要解决


Paw*_*ała 7

Alex 已经回答了这个问题,但如果您想更多地控制插件的加载方式,这里有一个小提示。您可以在 中定义主题中的顺序src/Resources/theme.json

例如,在插件 Y 之前加载插件 X:

"views": [
  "@Storefront",
  "@Plugins",
  "@PluginX",
  "@PluginY",
  "@YourTheme"
]
Run Code Online (Sandbox Code Playgroud)