如何在 Shopware 6 中进行模板多重继承?

How to do a template multiple inheritance in Shopware 6?

我有两个插件:

  1. 继承 Shopware 基础的 XYZ 插件 template/block 和 覆盖它。
  2. 我想继承 XYZ 覆盖的 ABC 插件 template/block 和 覆盖它。

如何在 Shopware 6 中执行此操作?

tabs.html.twig 文件中的 XYZ 插件代码:

{% sw_extends '@Storefront/storefront/page/product-detail/tabs.html.twig' %}

{% block page_product_detail_tabs_inner %}
    <div class="detail-accordion" id="accordion">
        {% block page_product_detail_accordion_description %}
            <div class="card card-accordion card-accordion-description">
                {% block page_product_detail_accordion_description_header %}
                    {# My custom logic #}
                {% endblock %}
            </div>
        {% endblock %}
    </div>
{% endblock %}

tabs.html.twig 文件中的 ABC 插件代码:

{% sw_extends '../../../../../../../XYZ/src/Resources/views/storefront/page/product-detail/tabs.html.twig' %}

{% block page_product_detail_tabs_inner %}
    {{ parent() }}
    <div class="detail-accordion" id="accordion">
        {% block page_product_detail_accordion_description %}
            <div class="card card-accordion card-accordion-description">
                {% block page_product_detail_accordion_description_header %}
                    {# My new custom logic to append #}
                {% endblock %}
            </div>
        {% endblock %}
    </div>
{% endblock %}

很遗憾,此代码无效。

{% sw_extends '../../../../../../../XYZ/src/Resources/views/storefront/page/product-detail/tabs.html.twig' %}

这是错误的。

在这两种情况下,您都必须扩展 @Storefront,并确保您的插件以正确的顺序加载。 因此,如果您首先加载插件 ABC,那么 XYZ 会自动扩展 ABC.

的模板

更新答案 插件按安装日期的顺序加载(当前为 v6.4)。