如何使用 Twig 和 October CMS 从博客列表中排除已知类别

How to exclude a known category from a blog list using Twig and October CMS

我正试图从我的博客列表中排除一个已知类别,因为我在我页面的其他地方有一个特殊的小部件,并且想避免我的文章出现两次。 这些文章可以有 2 个类别,这就是我遇到问题的原因。

我的逻辑是先检查是否在文章上设置了类别,这就是为什么我在代码中将小部件写了两次。 然后我想有一个 if 语句来检查我的类别名称(或 id,或任何可以用来追踪这只猫的东西)是否在我文章的 categories.list 中。

我确实设法隐藏了只有一个类别的文章,但因为这些文章很可能有 2 个不同的类别,所以我完全迷路了。

设置完整的类别列表对我有什么帮助吗?

如果你知道一些魔法树枝咒语可以帮助我,请告诉我。

<div class=main-layout-header></div>
<div class=main-layout-content>
    <h2 class="">All the News</h2>
    {% set posts = blogList.posts %}
        <div class="post-list">
            {% for post in posts %}
                {% if post.categories is not empty  %}
                    <div id="" class="news-card-layout category defined">
                        {% if post.image %}
                            <div class="news-card-layout__image">
                                <a href="{{ post.url }}"><img src="{{ post.image|media }}" alt="{{ post.title }}"></a>
                            </div>
                        {% endif %}
                        <div class="news-card-layout__details">
                        <div class="news-card-layout__infos">
                            <a href="{{ post.url }}"><h2 class="post-title" >{{ post.title }}</h2></a>
                            Posted
                            {% if post.categories.count %} in {% endif %}
                            {% for category in post.categories %}
                            <a href="{{ category.url }}">{{ category.name }}</a>{% if not loop.last %}, {% endif %}
                            {% endfor %}
                            on {{ post.published_at|date('Y-m-d G:i') }}
                        </div>
                        <div class="news-card-layout__excerpt">{{ post.summary|raw }}</div>
                    </div>
                </div>      

                {% else %}
                <div id="" class="news-card-layout category not defined">
                    {% if post.image %}
                        <div class="news-card-layout__image">
                            <a href="{{ post.url }}"><img src="{{ post.image|media }}" alt="{{ post.title }}"></a>
                        </div>
                    {% endif %}
                    <div class="news-card-layout__details">
                        <div class="news-card-layout__infos">
                            <a href="{{ post.url }}"><h2 class="post-title" >{{ post.title }}</h2></a>
                            Posted
                            {% if post.categories.count %} in {% endif %}
                            {% for category in post.categories %}
                            <a href="{{ category.url }}">{{ category.name }}</a>{% if not loop.last %}, {% endif %}
                            {% endfor %}
                            on {{ post.published_at|date('Y-m-d G:i') }}
                        </div>
                        <div class="news-card-layout__excerpt">
                            {{ post.summary|raw }}
                        </div>
                    </div>
                </div>
            {% endif %}
        {% endfor %}
    </div>

</div>

为什么不测试类别的长度(或者在本例中 twig 将计算数组中的数量)。

{% if post.categories|length == 1 %}

--编辑--

组件本身也可以排除一个类别。看看这个