我目前正在与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>
元素。
答案 0 :(得分:2)
固定。
没有意识到那些特定的动作正在输出布局代码,因此将其更改为:
{% block before_article %}
{% do action('woocommerce_before_main_content') %}
{% endblock %}
,然后重新放置{% do action('woocommerce_after_main_content') %}
,使其相对于{% do action('woocommerce_before_main_content') %}
处于正确的位置以关闭标签。