在AnQiCMS中,显示特定分类下的文章或产品列表是网站内容管理中的常见需求。无论是为了构建导航菜单下的子页面,还是在首页展示不同模块的精选内容,AnQiCMS都提供了灵活而强大的方式来实现这一目标。理解其内容组织逻辑和模板标签的使用,您就能轻松地将所需内容呈现在网站上。
理解AnQiCMS的内容模型与分类
首先,AnQiCMS内容的组织方式是基于“内容模型”和“分类”的。 内容模型就像是内容的“骨架”或“类型”,例如“文章模型”用来发布新闻、博客,而“产品模型”则用于展示商品。不同的模型可以拥有自定义的字段,以满足不同类型内容的存储需求。在AnQiCMS的后台,您可以找到这些模型的管理入口,并为它们设定独特的属性。 分类则是内容模型下的具体组织结构,它们通常是树状的,可以有多级。比如在“文章模型”下,您可以创建“公司新闻”、“行业动态”等分类;在“产品模型”下,则可以有“电子产品”、“家居用品”等分类。每个分类都归属于一个特定的内容模型。
当您需要在网站上展示特定内容时,通常会通过指定内容的所属模型ID(moduleId)和分类ID(categoryId)来精确获取。通常,文章模型对应的moduleId可能是1,产品模型可能是2,具体ID可以在后台的内容模型管理页面查看。分类ID则在创建或编辑分类时由系统生成,您也可以在分类管理页面找到。
实战操作:在模板中调用特定分类下的列表
在AnQiCMS的模板文件中,archiveList标签是用于获取文章或产品列表的核心工具。这个标签非常灵活,能够根据您的需求筛选、排序和展示内容。
要显示特定分类下的文章或产品,您可以这样做:
{% archiveList archives with moduleId="1" categoryId="5" limit="10" %}
{% for item in archives %}
<li>
<a href="{{item.Link}}">
<img src="{{item.Thumb}}" alt="{{item.Title}}">
<h3>{{item.Title}}</h3>
<p>{{item.Description}}</p>
<span>发布日期:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
</a>
</li>
{% empty %}
<li>当前分类下暂无内容。</li>
{% endfor %}
{% endarchiveList %}
在这段代码中:
{% archiveList archives with ... %}是调用列表的开始,archives是我们为获取到的内容列表设定的一个变量名。moduleId="1"指明我们要获取的是文章模型下的内容(假设文章模型的ID是1)。如果您需要显示产品,可以将其更改为相应的产品模型ID,例如moduleId="2"。categoryId="5"则精确指定了我们要获取ID为5的分类下的内容。您可以将其替换为您希望展示的分类ID。如果您希望包含该分类下的所有子分类内容,通常child参数默认为true,无需额外设置。limit="10"限制了显示的文章或产品数量为10篇。您可以根据页面布局调整这个数字。{% for item in archives %}循环遍历获取到的每一项内容。在循环中,item代表当前正在处理的文章或产品。{{item.Link}}、{{item.Title}}、{{item.Thumb}}、{{item.Description}}等是内容项的常用字段,分别代表其链接、标题、缩略图、简介等。{{stampToDate(item.CreatedTime, "2006-01-02")}}则用于格式化内容的发布时间。{% empty %}部分会在没有内容时显示自定义的提示信息。
这段代码可以放置在您网站的任意模板文件中,例如首页、侧边栏或者专门的列表页面,只要它需要展示特定分类的内容。
进阶技巧:结合分页与动态分类显示
实现分页显示:
如果一个分类下的内容很多,您可能需要分页显示。只需将archiveList标签的type参数设置为"page",并结合pagination标签即可:
{% archiveList articles with moduleId="1" categoryId="5" type="page" limit="10" %}
{# 文章列表内容与上述相同 #}
{% for item in articles %}
<li><a href="{{item.Link}}">{{item.Title}}</a></li>
{% endfor %}
{% empty %}
<li>当前分类下暂无内容。</li>
{% endarchiveList %}
<div class="pagination">
{% pagination pages with show="5" %}
<a href="{{pages.FirstPage.Link}}">首页</a>
{% if pages.PrevPage %}<a href="{{pages.PrevPage.Link}}">上一页</a>{% endif %}
{% for page in pages.Pages %}<a class="{% if page.IsCurrent %}active{% endif %}" href="{{page.Link}}">{{page.Name}}</a>{% endfor %}
{% if pages.NextPage %}<a href="{{pages.NextPage.Link}}">下一页</a>{% endif %}
<a href="{{pages.LastPage.Link}}">尾页</a>
{% endpagination %}
</div>
在这里,limit="10" 不再是显示的总条数,而是每页显示的条数。pagination 标签会根据当前页码和总页数生成导航链接。
动态获取当前分类ID:
如果您正在一个分类页面(例如articles/list-news.html)中,想要显示当前分类下的文章,而不想硬编码categoryId,AnQiCMS会自动识别当前页面的分类信息。您甚至可以通过categoryDetail标签获取当前分类的更多详细信息,例如分类标题、描述等。
”`twig {# 在分类列表页面的模板中 #} {% categoryDetail currentCategory with name=“Id” %} {# 获取当前分类的ID #}
{% if currentCategory %} {# 确保获取到分类ID #}
{% archiveList articles with moduleId="1" categoryId=currentCategory type="page" limit="10" %}
{% for item in articles %}
<li><a href="{{item.Link}}">{{item.Title}}</a></li>
{% endfor %}
{% empty %}