在AnQiCMS中管理网站内容,经常需要根据不同的条件来展示文档列表。无论是想在首页展示某个特定分类的最新文章,还是在侧边栏突出显示一些推荐内容,系统都提供了灵活的工具来帮助我们实现。今天,我们就来聊聊如何巧妙地利用分类ID和推荐属性,精准地筛选并显示您想要的文档列表。
精准定位:按分类ID筛选文档列表
当您的网站内容日益丰富,清晰的分类结构就显得尤为重要。AnQiCMS允许您为每篇文档选择一个所属分类,这不仅方便后台管理,也为前端展示提供了极大的灵活性。
如果您希望在某个页面显示特定分类下的文档,比如只显示“新闻中心”分类的最新动态,您可以使用archiveList这个强大的模板标签。这个标签有一个categoryId参数,您只需将目标分类的ID作为值传递给它。比如,假设您的“新闻中心”分类ID是101,那么代码会是这样:
{% archiveList latestNews with categoryId="101" limit="5" %}
{% for item in latestNews %}
<a href="{{item.Link}}">{{item.Title}}</a>
{# 更多文档信息,如发布时间、简介等 #}
{% endfor %}
{% endarchiveList %}
这里,latestNews是我们给文档列表定义的一个临时变量名,limit="5"则限制了只显示5条最新文档。通过这种方式,您可以轻松地在网站的任何位置,根据分类ID来调取相应的文档内容。
值得一提的是,如果您只想显示当前分类下的文档,而不包含其子分类的内容,可以进一步添加child=false参数。反之,如果想要获取所有顶级分类,则可以设置categoryId="0"并配合moduleId参数来指定模型类型。这些细致的控制,让文档展示更加贴合您的业务需求。
突出重点:按推荐属性筛选文档列表
除了按分类,AnQiCMS还为文档提供了一系列“推荐属性”,也被称为“Flag”。这些属性就像内容的标签,帮助您对重要内容进行标记,从而在网站的不同区域进行重点展示,比如设置幻灯片、头条、推荐等。
在后台编辑文档时,您会看到一个“推荐属性”的选项,可以选择多种属性,比如头条[h]、推荐[c]、幻灯[f]、特荐[a]、滚动[s]、加粗[h]、图片[p]、跳转[j]等,每个属性都有一个对应的字母标识。前台模板正是通过这些字母标识来调用特定内容。
要筛选带有特定推荐属性的文档,您同样会用到archiveList标签,并配合flag参数。例如,如果您想在首页展示3篇被标记为“推荐”的文档,并且其flag字母是c,代码可以这样写:
{% archiveList featuredArticles with flag="c" limit="3" %}
{% for item in featuredArticles %}
<div class="featured-item">
<img src="{{item.Thumb}}" alt="{{item.Title}}" />
<h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
{# 更多详情 #}
</div>
{% endfor %}
{% endarchiveList %}
通过flag="c",系统会自动筛选出所有被标记为“推荐”的文档。如果您想排除某个特定属性的文档,也可以使用excludeFlag参数。
灵活组合:分类ID与推荐属性的双重筛选
AnQiCMS的强大之处在于,您可以将这些筛选条件进行灵活组合,实现更精细化的内容展示。
比如,您可能希望在“公司新闻”分类下,只显示那些同时被标记为“头条”的文章。假设“公司新闻”的分类ID是102,而“头条”的flag是h,那么您的代码就可以这样组织:
{% archiveList hotCompanyNews with categoryId="102" flag="h" limit="4" order="views desc" %}
{% for item in hotCompanyNews %}
<article>
<h2><a href="{{item.Link}}">{{item.Title}}</a></h2>
<p>{{item.Description}}</p>
<span>阅读量:{{item.Views}}</span>
</article>
{% endfor %}
{% endarchiveList %}
在这个例子中,我们不仅结合了categoryId和flag进行筛选,还通过order="views desc"将结果按阅读量从高到低排序,并且限制了显示数量为4篇。如果您的列表需要分页,可以将type参数设置为page,然后配合pagination标签一起使用,为用户提供更好的浏览体验。
{% archiveList paginatedNews with categoryId="102" flag="h" type="page" limit="10" order="id desc" %}
{% for item in paginatedNews %}
<article>
<h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
<p>{{item.Description|truncatechars:100}}</p>
<span>发布日期:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
</article>
{% empty %}
<p>该分类下暂无符合条件的文档。</p>
{% endfor %}
{# 分页导航 #}
{% pagination pages with show="5" %}
{# 首页、上一页、中间页码、下一页、末页的展示逻辑 #}
{# 例如:#}
{% for pageItem in pages.Pages %}
<a class="{% if pageItem.IsCurrent %}active{% endif %}" href="{{pageItem.Link}}">{{pageItem.Name}}</a>
{% endfor %}
{% endpagination %}
{% endarchiveList %}
通过这些灵活的筛选和显示方式,AnQiCMS让内容的组织和呈现变得非常简单高效。您可以根据网站的设计和运营策略,随心所欲地控制每个文档列表的展现形式,为访客提供更精准、更有价值的内容。
常见问题 (FAQ)
1. 如何获取当前页面的分类ID或TagID,以便动态筛选文档?
在分类页面或Tag页面,AnQiCMS会自动识别当前页面的分类ID或TagID。您无需手动指定categoryId或tagId参数,archiveList标签会智能地读取当前上下文信息。例如,在分类列表页,{% archiveList archives with type="page" %}会默认获取当前分类下的文档。如果您需要显式获取ID,可以使用{% categoryDetail with name="Id" %}或{% tagDetail with name="Id" %}。
2. 如果我设置了推荐属性(Flag),但前台没有显示,可能是什么原因?
首先,请检查您的模板代码中archiveList标签是否正确使用了flag参数,并且传入的字母标识是否与后台设置的匹配(例如,flag="c"表示推荐)。其次,确保您的模板逻辑中确实包含了循环遍历文档列表并显示内容的结构。最后,如果仍未显示,可以检查一下后台该文档是否已发布、是否属于正确的分类,并且推荐属性是否正确勾选并保存。
3. 文档列表如何实现分页功能?
要实现文档列表的分页功能,您需要在archiveList标签中设置type="page",并指定每页显示的文档数量,例如limit="10"。然后,在archiveList标签的结束之后,使用pagination标签来生成分页导航链接。pagination标签会根据archiveList生成的分页数据,自动显示首页、上一页、中间页码、下一页和末页等导航元素,方便用户浏览。