我目前正在与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>
源代码中的元素。