Shopware 6:使用 sw_include 时未加载 Twig 文件

Posted

技术标签:

【中文标题】Shopware 6:使用 sw_include 时未加载 Twig 文件【英文标题】:Shopware 6: Twig files not loaded when using sw_include 【发布时间】:2020-10-22 19:37:24 【问题描述】:

目前我正在为 Shopwre 6 的主题而苦苦挣扎。 在 6.2.2 版中,我的主题中断并且不会加载任何包含的树枝文件。

以下代码在我的主题的 base.html.twig 文件中。

% block base_header %
    <header class="header-main">
        % block base_header_inner %
            <div class="container">
                % sw_include '@Themename/storefront/layout/header/header.html.twig' %
            </div>
        % endblock %
    </header>
% endblock %

使用此符号不会加载任何内容。用extends替换sw_extends,加载文件。

在 6.1.6 版本中它可以工作,但在当前的 6.2.2 版本中没有。在我的 theme.json 中,我的视图如下所示:

"views": [
     "@Storefront",
     "@Plugins",
     "@Themename"
  ],

感谢您的帮助和建议。

马库斯

【问题讨论】:

你说用extends替换sw_extends会加载文件。在您共享的代码中,既没有 sw_extend 也没有 extend 语句。你能澄清一下吗? 嗨,哦,那是我的错误。抱歉,我的意思当然是 sw_include 和 include。对不起,我的这个错误的帖子。正如 shopware 在他们的文档 docs.shopware.com/en/shopware-platform-dev-en/developer-guide/… 中所写,它应该用于继承。但它不适用于我的环境。 【参考方案1】:

我已经测试了一下,似乎这是一个命名冲突。因为自定义 layout/header/header.html.twig 的名称与核心主题中的名称相同,所以它会同时被覆盖和包含。当我在同一目录下创建同名文件时,默认情况下它将覆盖核心文件。在示例中,它还包含在另一个自定义模板中。但是,当我将其重命名为例如“custom-header”并将其作为“custom-header”包含在内。

当自定义主题的“header.html.twig”扩展核心“header.html.twig”时,也可以完全不包含它。因为上例中的base_header 块在核心模板中看起来基本相同。可以通过在自定义主题中添加 layout/header/header.html.twig 来覆盖标题。标头本身的包含已经在核心“base.html.twig”中发生

【讨论】:

以上是关于Shopware 6:使用 sw_include 时未加载 Twig 文件的主要内容,如果未能解决你的问题,请参考以下文章

Shopware 6 OneToMany 关系

如何扩展 Shopware 6 控制器操作

带有 Mailchimp 的 Shopware 6

Shopware 6:如何删除所有演示数据

如何在 Shopware 6 中获取公用文件夹绝对路径?

Shopware 6 如何在scss中使用配置好的主题原色?