在网站运营过程中,我们经常需要对内容进行精细化管理和展示。例如,我们可能希望在首页推荐文章时,不显示某些内部公告、特定推广内容,或者一些暂时不适合对外展示的草稿分类文章。安企CMS(AnQiCMS)作为一个功能强大的内容管理系统,充分考虑到了这类需求,并提供了一个简单而灵活的方式来实现——通过在文档列表标签中指定排除参数。
本文将深入探讨如何在AnQiCMS的文档列表中排除某些特定分类的文章,帮助您更有效地控制内容展示,优化用户体验。
精准控制:在AnQiCMS文档列表中排除特定分类文章
安企CMS的核心优势之一在于其灵活的内容管理和模板标签系统。当您需要在网站的前端页面展示文章列表时,通常会用到 archiveList 这个强大的模板标签。它不仅能帮助您筛选特定分类的文章、按各种条件排序,还能轻松实现文章分类的排除。
核心利器:excludeCategoryId 参数
要实现文档列表的分类排除,AnQiCMS为此提供了一个非常直观且强大的参数:excludeCategoryId。顾名思义,这个参数允许您指定一个或多个分类的唯一ID,从而让这些分类下的文章不会出现在当前的文档列表中。
如何找到分类的ID?
在安企CMS后台,您可以轻松找到每个分类的唯一ID。
- 登录您的AnQiCMS后台。
- 导航到“内容管理” -> “文档分类”。
- 在分类列表中,每个分类条目都会显示一个“ID”列。这就是您需要用到的分类ID。此外,在编辑某个分类时,浏览器地址栏的URL中也会包含该分类的ID(例如:
.../category/edit?id=10,这里的10就是分类ID)。
如何在模板中使用 excludeCategoryId?
一旦您确定了要排除的分类ID,就可以将其应用到您的模板文件中的 archiveList 标签里。
基本用法:排除单个分类
假设您想在某个文章列表中排除ID为 10 的“内部公告”分类下的所有文章。您的 archiveList 标签可以这样写:
{% archiveList archives with type="page" limit="10" excludeCategoryId="10" %}
{# 在这里循环显示您的文章内容 #}
{% for item in archives %}
<li>
<a href="{{item.Link}}">
<h5>{{item.Title}}</h5>
<p>{{item.Description}}</p>
<span>发布日期:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
</a>
</li>
{% empty %}
<li>当前没有可显示的文章。</li>
{% endfor %}
{% endarchiveList %}
高级用法:排除多个分类
如果您需要同时排除多个分类,例如ID为 10 的“内部公告”和ID为 12 的“草稿”分类,您只需用逗号将这些分类ID分隔开:
{% archiveList archives with type="page" limit="10" excludeCategoryId="10,12" %}
{# 在这里循环显示您的文章内容 #}
{% for item in archives %}
<li>
<a href="{{item.Link}}">
<h5>{{item.Title}}</h5>
<p>{{item.Description}}</p>
<span>发布日期:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
</a>
</li>
{% empty %}
<li>当前没有可显示的文章。</li>
{% endfor %}
{% endarchiveList %}
excludeCategoryId 与 categoryId 的配合使用
excludeCategoryId 参数可以与 categoryId 参数配合使用,实现更精细的筛选。例如,您可能只想在“新闻中心”(假设ID为 1)下显示文章,但同时要排除“新闻中心”内的“行业活动”(假设ID为 5)这个子分类的文章。
在这种情况下,categoryId 会先筛选出“新闻中心”及其子分类下的所有文章(如果 child 参数为 true,默认为true),然后 excludeCategoryId 再从这些文章中排除掉分类ID为 5 的文章。
{% archiveList newsArticles with type="page" categoryId="1" excludeCategoryId="5" limit="10" %}
{# 显示属于分类ID 1,但不属于分类ID 5 的文章 #}
{% for item in newsArticles %}
<li>...</li>
{% empty %}
<li>没有找到符合条件的新闻文章。</li>
{% endfor %}
{% endarchiveList %}
实践建议与注意事项
- 明确分类ID: 在修改模板之前,务必确认您要排除的分类ID是准确无误的。错误的ID可能导致预期外的结果。
- 内容存在性: 请注意,
excludeCategoryId只是控制内容的前端显示,并非删除内容。被排除的文章仍然存在于您的AnQiCMS系统中,并且可以通过其直接URL访问。 - 多处应用: 如果您的网站在多个地方展示文章列表(如首页、侧边栏、特定专题页等),并且希望在所有这些地方都应用相同的排除逻辑,您需要在每个相关的
archiveList标签中都添加excludeCategoryId参数。 - SEO考量: 如果被排除的分类文章是您不希望被搜索引擎抓取的,仅仅通过
excludeCategoryId在前端隐藏是不够的。您可能需要结合AnQiCMS的Robots.txt配置或文章详情页的noindex设置来阻止搜索引擎收录。
通过掌握 excludeCategoryId 参数,您可以更加灵活和精准地管理AnQiCMS网站上的内容呈现,确保访问者总能看到最符合您运营策略的文章列表。
常见问题解答 (FAQ)
Q1: excludeCategoryId 参数是否会影响文章的SEO表现?
A1: excludeCategoryId 主要控制的是文章在特定列表中的前端显示。文章本身如果仍然有可访问的URL链接,并且没有通过Robots.txt或noindex标签等SEO手段进行阻止,搜索引擎依然可以抓取并收录这些文章。如果您不希望某个分类的文章被搜索引擎收录,建议在后台“文档分类”编辑页面或单个文章编辑页面中,通过高级SEO设置来添加noindex标签,或在AnQiCMS的Robots.txt管理中进行配置。
Q2: 如果我排除了一个父级分类,其下的所有子分类文章也会被自动排除吗?
A2: excludeCategoryId 参数直接作用于文章所关联的分类ID。如果您排除了某个父级分类的ID(例如ID为10),那么直接属于ID为10的分类的文章会被排除。如果子分类的文章其本身的CategoryId是子分类的ID(例如ID为11,它是ID为10的子分类),则除非您也在excludeCategoryId中明确指定了ID为11,否则这些子分类文章不会被自动排除。为了确保排除整个分类树,您可能需要手动列出所有相关的父级和子级分类ID。
Q3: 除了 excludeCategoryId,还有哪些参数可以帮助我更精细地筛选文章列表?
A3: AnQiCMS的 archiveList 标签提供了多种强大的筛选参数:
categoryId: 指定要包含的分类ID(支持多个ID用逗号分隔)。moduleId: 根据文章