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 文件的主要内容,如果未能解决你的问题,请参考以下文章