【问题标题】:RainLab.Blog Post List: List Sub-Categories under a specific Top-Level CategoryRainLab.Blog 帖子列表:列出特定顶级类别下的子类别
【发布时间】:2021-08-24 05:02:24
【问题描述】:

我正在开发一个 10 月的 CMS 项目,该项目使用一个博客,我需要将博客文章分成两个主要类别。在使用 RainLab.Blog 插件的 Post List 组件列出博客文章时,我需要列出属于特定顶级类别下的子类别的类别,并排除其他类别。

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

在默认的帖子列表组件中,分类如下所示:

{% 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 %}

因此,我希望将帖子列为“Shorebirds”和“Hummingbirds”,而不是“Corals”,因为该类别不是“Birds”的直接子类别。

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

【问题讨论】:

  • 好的,如果我是正确的,您只需要一个类别列表,它是该特定博客的顶级类别的直接子级,所以一个信息。需要像你如何定义哪个是主要的顶级类别或者它们是固定的还是可以硬编码它们?
  • 还有另一个问题,您与我们分享了您选择这些类别的屏幕截图:)
  • 正确。我不希望 TWIG 输出帖子列表中当前帖子已标记的每个类别,但前提是所述类别具有“鸟类”类别作为直接父级。如果“鸟类”类别是硬编码的,那完全没问题。我只需要动态抓取它的孩子。

标签: twig octobercms octobercms-plugins


【解决方案1】:

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

这里我使用slug来比较父级,你也可以使用id,这完全取决于你。

{% 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

如有疑问请留言

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    相关资源
    最近更新 更多