WooCommerce输出破坏了我的代码–错误地关闭了标签

时间:2019-01-25 12:55:04

标签: php wordpress woocommerce twig timber

我目前正在与WooCommerce合作开发一个网站,并使用Twig模板系统,正在处理存档模板,并以以下代码为例:

{% extends 'page.twig' %}

{% block before_article %}
    <div class="row">
        <div class="col-md-12">
            {% do action('woocommerce_before_main_content') %}
        </div>
    </div>
{% endblock %}

{% block page_header %}
    <header>
        <h1>{{ title|e2 }}</h1>
        {% block below_h1 %}
            {% do action('woocommerce_archive_description') %}
        {% endblock %}
    </header>
{% endblock %}

{% block primary_block %}

    {% if products|length > 0 %}

        <div class="before-products">
            {% do action('woocommerce_before_shop_loop') %}
        </div>

        <div class="products">
            <div class="row flex">
                {% for post in products %}
                    {% include ["partials/tease-product.twig"] %}
                {% endfor %}
            </div>
        </div>

        <div class="after-products">
            {% do action('woocommerce_after_shop_loop') %}
        </div>

    {% else %}

        <div class="no-products">
            {% do action('woocommerce_no_products_found') %}
        </div>

    {% endif %}

    {% do action('woocommerce_after_main_content') %}

{% endblock  %}

但是,WooCommerce通过动作挂钩生成的代码破坏了网站,因为它似乎无法正确关闭标签-特别是在使用<main>标签时。

例如,使用此位:

{% block before_article %}
    <div class="row">
        <div class="col-md-12">
            {% do action('woocommerce_before_main_content') %}
        </div>
    </div>
{% endblock %}

下面的代码不仅来自本节,而且关闭了<main>标记之前的整个代码:

            <div class="row">
    <div class="col-md-12">
        <div id="primary" class="content-area"><main id="main" class="site-main" role="main">        </div>
</div>
        <div class="row">
            <div class="col-md-12">
                <article class="general-content">

                        <header>
    <h1>Collar</h1>
                            </header>

                    <div class="content">



    <div class="no-products">
        <p class="woocommerce-info">No products were found matching your selection.</p>
    </div>


</main>

顺便说一句-我暂时删除了WooCommerce面包屑,这就是为什么您在上面的代码中看不到它们的原因。

当我删除第一个动作钩子时,似乎大多数的动作钩子都在这样做,但是我仍然在源代码中发现其他放置错误的<main>元素。

1 个答案:

答案 0 :(得分:2)

固定。

没有意识到那些特定的动作正在输出布局代码,因此将其更改为:

{% block before_article %}
    {% do action('woocommerce_before_main_content') %}
{% endblock %}

,然后重新放置{% do action('woocommerce_after_main_content') %},使其相对于{% do action('woocommerce_before_main_content') %}处于正确的位置以关闭标签。