You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopware 6 自定义插件如何覆写第三方插件的Twig模板

Shopware 6 覆写第三方插件Twig模板失效解决方案

核心原因

Shopware 6 的模板加载优先级严格按照插件依赖顺序执行,未正确声明依赖的情况下,自定义插件的模板会早于第三方插件加载,继承逻辑自然不生效。

分步解决方法

  • 第一步:在自定义插件的依赖声明中指定加载顺序
    1. 打开自定义插件ExamplePlugin根目录的composer.json,在require节点添加对FroshProductCompare的依赖:
    {
      "require": {
        "store.shopware.com/froshproductcompare": "*"
      }
    }
    
    1. 打开同目录下的src/Resources/config/plugin.xml,在<requirements>节点添加依赖声明:
    <requirements>
      <require>store.shopware.com/froshproductcompare</require>
    </requirements>
    
    完成后重新安装你的自定义插件,系统会自动保证FroshProductCompare早于你的插件加载。
  • 第二步:修正模板继承写法
    不要使用@Storefront前缀继承第三方插件模板,直接使用第三方插件的Twig命名空间即可,原有写法是正确的:
    {% sw_extends "@FroshProductCompare/storefront/component/compare/section/overview.html.twig" %}
    
    注意命名空间大小写严格匹配,Frosh系列插件的命名空间为首字母大写的插件名,小写会导致找不到模板。
  • 第三步:确认文件路径完全匹配
    自定义插件内的模板路径必须和第三方插件的模板路径完全一致,包括大小写:
    第三方模板路径:vendor/store.shopware.com/froshproductcompare/src/Resources/views/storefront/component/compare/section/overview.html.twig
    自定义插件模板路径:custom/plugins/ExamplePlugin/Resources/views/storefront/component/compare/section/overview.html.twig
    Linux环境下目录大小写敏感,路径稍有偏差就会加载失败。
  • 第四步:执行完整缓存清理和资源构建
    优先使用CLI命令执行全量清理,避免后台清理不彻底:
    # 清理缓存
    bin/console cache:clear
    # 安装静态资源
    bin/console assets:install
    # 编译主题模板
    bin/console theme:compile
    # 生产环境请追加--env=prod参数
    

验证方法

在你覆写的twig模板中任意位置添加测试输出{{ 'TEST_TEMPLATE_LOADED' }},刷新前台对应页面如果能看到该字符串,说明模板已经正常加载,之后再编写你需要的区块覆写逻辑即可。

内容的提问来源于stack exchange,提问作者MweisSW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:06:06