在安企CMS中管理网站内容时,我们常常需要精确控制文章的展示。有时,我们可能希望某个特定分类的文章不出现在常规的文章列表中,例如用于内部通知、测试内容,或者一些只在特定页面展示的推广信息。安企CMS提供了简洁而高效的方法来满足这类需求,让您能够灵活地排除特定分类或多个分类的文章,从而实现更精准的内容呈现。

核心解决方案:灵活运用 archiveList 标签

在安企CMS的模板设计中,archiveList 标签是我们用来调用文章列表的核心工具。它功能强大,能够根据多种条件筛选、排序和展示文章。要实现排除特定分类文章的目的,archiveList 标签提供了一个名为 excludeCategoryId 的参数,专门用于指定不显示的文章分类。

1. 排除单个分类的文章

如果您只想排除一个分类的文章,只需在 archiveList 标签中设置 excludeCategoryId 参数,并指定该分类的唯一ID即可。例如,假设您有一个ID为 5 的分类,其下的文章不希望出现在当前列表中,您的代码可以这样写:

{% archiveList archives with excludeCategoryId="5" limit="10" %}
    {% for item in archives %}
    <li>
        <a href="{{item.Link}}"><h5>{{item.Title}}</h5></a>
        <p>{{item.Description}}</p>
    </li>
    {% empty %}
    <li>当前没有文章可显示。</li>
    {% endfor %}
{% endarchiveList %}

这段代码会从所有文章中筛选出最新的10篇文章,但会跳过所有属于分类ID为 5 的文章。

2. 排除多个分类的文章

如果您需要同时排除多个分类的文章,excludeCategoryId 参数同样能够胜任。您只需将所有要排除的分类ID用英文逗号 , 分隔开即可。例如,要排除ID为 5812 的分类文章,您可以这样操作:

{% archiveList archives with excludeCategoryId="5,8,12" limit="10" %}
    {% for item in archives %}
    <li>
        <a href="{{item.Link}}"><h5>{{item.Title}}</h5></a>
        <p>{{item.Description}}</p>
    </li>
    {% empty %}
    <li>当前没有文章可显示。</li>
    {% endfor %}
{% endarchiveList %}

通过这种方式,您可以在一个 archiveList 标签中,轻松地排除任意数量的不想展示的分类内容。

如何找到分类ID?

要使用 excludeCategoryId 参数,您首先需要知道您希望排除的分类的唯一ID。这非常简单,您可以登录安企CMS后台,进入『内容管理』-『文档分类』页面。在分类列表中,每个分类条目都会清楚地显示其唯一的ID。通常,您也可以在编辑分类时,从浏览器地址栏的URL中找到这个ID(例如:.../category/edit/10,这里的 10 就是分类ID),或者直接查看分类列表中的『ID』列。

与其他 archiveList 参数结合使用

excludeCategoryId 可以与 archiveList 标签的其他参数完美结合,让您的文章列表展示更加精准和灵活。例如,您可能希望显示除特定分类外的所有最新文章,并进行分页:

{% archiveList archives with excludeCategoryId="5,8" type="page" limit="15" order="created_time desc" %}
    {% for item in archives %}
    <li>
        <a href="{{item.Link}}"><h5>{{item.Title}}</h5></a>
        <p>发布时间: {{stampToDate(item.CreatedTime, "2006-01-02")}}</p>
    </li>
    {% endfor %}
{% endarchiveList %}

{# 添加分页功能 #}
{% pagination pages with show="5" %}
    <ul>
        {% if pages.PrevPage %}<li class="prev"><a href="{{pages.PrevPage.Link}}">上一页</a></li>{% endif %}
        {% for item in pages.Pages %}<li class="{% if item.IsCurrent %}active{% endif %}"><a href="{{item.Link}}">{{item.Name}}</a></li>{% endfor %}
        {% if pages.NextPage %}<li class="next"><a href="{{pages.NextPage.Link}}">下一页</a></li>{% endif %}
    </ul>
{% endpagination %}

这段代码将显示除了分类ID为 58 之外的所有文章,按创建时间倒序排列,每页显示15篇文章,并支持分页浏览。

扩展应用:排除特定推荐属性的文章

除了按分类排除文章,安企CMS还提供了按“推荐属性(Flag)”排除文章的功能。如果您的文章被标记了特定的属性(例如:头条[h]推荐[c]幻灯[f] 等),您也可以使用 excludeFlag 参数来避免这些文章出现在列表中。例如,要排除所有被标记为“推荐”属性的文章:

{% archiveList archives with excludeFlag="c" limit="10" %}
    {# 文章列表内容 #}
{% endarchiveList %}

小结

通过 archiveList 标签的 excludeCategoryId 参数,安企CMS为网站运营者提供了极大的灵活性,能够根据实际需求精确控制文章的展示范围。无论是排除单个不常用的分类,还是过滤掉多个含有特定内容的分类,这个功能都让内容管理变得更加高效和便捷,确保您的网站内容能够以最合理、最符合预期的形式呈现给访客。


常见问题 (FAQ)

Q1: 如果我想显示某个大分类下的文章,但同时排除其下某个特定的子分类文章,应该如何操作?

A1: 您可以将大分类的ID指定给 categoryId 参数,然后将要排除的子分类ID指定给 excludeCategoryId 参数。例如,如果您想显示分类ID为 10 的所有文章,但排除其下的子分类ID 15 的文章,可以这样写:{% archiveList archives with categoryId="10" excludeCategoryId="15" %}。此外,如果您只想显示分类 10 下的文章而不包括任何子分类的文章,可以使用 child=false 参数:{% archiveList archives with categoryId="10" child=false %}

Q2: 我设置了 excludeCategoryId,但发现文章没有正常排除,可能是什么原因?

A2: 首先,请检查 excludeCategoryId 参数中填写的分类ID是否正确无误,多个ID之间是否使用了英文逗号 , 分隔。其次,确认您的模板代码是否正确使用了 archiveList 标签以及 excludeCategoryId 参数,并且没有其他更具体的筛选条件(例如直接指定 categoryId 为被排除的分类)覆盖了此排除规则。最后,清除一下网站缓存(如果启用),确保最新的模板代码和数据生效。

Q3: excludeCategoryId 参数是否会影响文章的总数统计?

A3: 是的,excludeCategoryId 参数在筛选文章时,会直接从符合条件的总文章数中排除指定分类的文章。因此,如果您在使用 archiveList 结合分页功能时,排除文章后,分页的总页数和总条目数都会相应减少,因为它们是基于实际显示的文章数量来计算的。