RainLab.Blog Post 列表:列出特定顶级类别下的子类别

RainLab.Blog Post List: List Sub-Categories under a specific Top-Level Category

我正在开发一个 10 月的 CMS 项目,该项目使用一个博客,我需要将博客 post 分为两大类。当使用 RainLab.Blog 插件的 Post 列表组件列出博客 posts 时,我需要列出作为特定顶级类别下的子类别的类别并排除其他类别。

在 TWIG 模板中,我想遍历并列出属于“鸟类”而不是“海洋生物”的类别。

在默认的Post列表组件中,类别是这样列出的:

{% for category in post.categories %}
    <a href="{{ category.url }}">{{ category.name }}</a>{% if not loop.last %}, {% endif %}
{% endfor %}

我想把它改成这样:

{% for category in post.categories %}
    {# if category is a sub-category of "Birds"... #}
        <a href="{{ category.url }}">{{ category.name }}</a>{% if not loop.last %}, {% endif %}
    {# endif #}
{% endfor %}

所以我希望 post 被列为“水鸟”和“蜂鸟”,而不是“珊瑚”,因为这个类别不是“鸟类”的直接子类别。

我遇到了 this stack overflow question,但它避免了渲染不符合条件的 post。我仍然想获取和呈现其他类别中的 post,但仅 列出匹配 .

的类别

如果 hardcode category 完全没问题,那么您可以简单地将父级 slugid 的类别与硬编码值进行比较。

Here I am using the slug to compare parent, you can also use id it's totally up to you.

{% for category in post.categories %}
    {% set parentCat = category.getParent().first() %}                        
    {% if parentCat.slug == 'birds' %}
    <!-- here we are ^ comparing ^  please replace value as per your need -->
        <a href="{{ category.url }}">{{ category.name }}</a>
        {% if not loop.last %}, {% endif %}
    {% endif %}
{% endfor %}

现在它应该只显示一个 categories,它的父类别有 given slug

如有疑问请评论