作为一名资深的安企CMS(AnQiCMS)网站运营人员,我深知内容呈现方式对于网站用户体验和内容营销效果的重要性。安企CMS提供了一套强大而灵活的模板标签系统,使我们能够轻松地获取并展示各种类型的文章和产品列表,无论是最新的内容更新,还是特定分类下的专题展示,都能通过简单的配置实现。
理解安企CMS的内容模型
在开始获取内容列表之前,了解安企CMS的内容模型是基础。安企CMS支持自定义内容模型,但默认通常会包含“文章模型”和“产品模型”。每个内容模型都对应一个唯一的 moduleId。例如,通常文章模型对应的 moduleId 可能是 1,产品模型可能是 2。在我们的模板中调用内容列表时,指定正确的 moduleId 至关重要,它确保我们获取到的是预期类型的内容。
获取最新发布或更新的文章/产品列表
展示网站的最新动态是吸引用户、提升活跃度的有效方式。在安企CMS中,要获取最新发布的文章或产品列表,主要依赖 archiveList 模板标签。这个标签提供了丰富的参数来筛选、排序和限制内容的显示。
为了获取最新内容,我们通常会利用内容的ID进行倒序排序,因为ID通常是自增的,代表着内容的发布顺序。通过设置 order="id desc",系统会按内容ID从大到小排列,即最新发布的内容会排在最前面。同时,limit 参数可以控制您希望显示多少条内容。
例如,要显示最新的5篇新闻文章(假设文章模型的 moduleId 为 1),您可以这样编写模板代码:
{# 获取最新发布的5篇新闻文章 #}
{% archiveList latestNews with moduleId="1" order="id desc" limit="5" %}
{% for item in latestNews %}
<div class="news-item">
<h3><a href="{{ item.Link }}">{{ item.Title }}</a></h3>
<p>{{ item.Description|truncatechars:100 }}</p> {# 截取描述前100个字符 #}
<span class="publish-date">发布日期: {{ stampToDate(item.CreatedTime, "2006年01月02日") }}</span>
</div>
{% endfor %}
{% endarchiveList %}
在这段代码中,latestNews 是您自定义的变量名,用于存储查询到的内容列表。moduleId="1" 明确了我们要获取文章,order="id desc" 确保了内容按最新发布排序,而 limit="5" 则限制了只显示5条。stampToDate 标签则帮助我们将时间戳格式化为易读的日期。
获取指定分类下的文章/产品列表
针对特定主题或产品系列创建内容列表,是构建清晰网站结构和引导用户浏览的关键。archiveList 标签同样能够出色地完成这项任务,其核心在于 categoryId 参数。
您可以通过 categoryId 参数指定一个或多个分类的ID来获取其下的内容。如果指定了多个分类ID,它们之间需要用逗号隔开。默认情况下,archiveList 会包含指定分类及其所有子分类下的内容。如果您只想获取当前分类(不包括其子分类)下的内容,可以额外设置 child="false"。
例如,要显示“产品分类A”(假设其 categoryId 为 10)下的所有产品(假设产品模型的 moduleId 为 2),您可以这样编写:
{# 获取“产品分类A”下最新的8个产品 #}
{% archiveList categoryProducts with moduleId="2" categoryId="10" order="id desc" limit="8" %}
{% for item in categoryProducts %}
<div class="product-card">
<a href="{{ item.Link }}">
<img src="{{ item.Thumb }}" alt="{{ item.Title }}">
<h3>{{ item.Title }}</h3>
<p class="price">¥ {{ item.Price }}</p>
</a>
</div>
{% endfor %}
{% endarchiveList %}
如果您想获取“解决方案”(categoryId 为 12)和“行业案例”(categoryId 为 15)这两个分类下的文章,且只包含这两个分类自身的内容,不包括子分类,代码会是这样:
{# 获取“解决方案”和“行业案例”分类下,不含子分类的文章 #}
{% archiveList caseStudies with moduleId="1" categoryId="12,15" child="false" limit="10" %}
{% for item in caseStudies %}
<div class="study-item">
<h4><a href="{{ item.Link }}">{{ item.Title }}</a></h4>
<p>{{ item.Description|truncatechars:150 }}</p>
</div>
{% endfor %}
{% endarchiveList %}
结合分页功能展示大量内容
当一个分类下的内容数量非常多时,为了避免页面过长和加载缓慢,我们通常会结合分页功能来展示。archiveList 标签通过设置 type="page" 参数,可以自动处理分页逻辑。之后,您可以使用 pagination 标签来渲染分页导航链接。
”`twig {# 获取“博客”分类下所有文章,每页显示10篇,并启用分页 #} {% archiveList blogPosts with moduleId=“1” categoryId=“20” type=“page” limit=“10” %}
{% for item in blogPosts %}
<article class="blog-post">
<h2><a href="{{ item.Link }}">{{ item.Title }}</a></h2>
<p class="post-meta">发布于 {{ stampToDate(item.CreatedTime, "2006-01-02") }}</p>
<div class="post-summary">{{ item.Description|safe }}</div>
<a href="{{ item