网站内容的动态展示是现代网站运营的核心之一,它不仅能提升用户体验,让访客轻松找到感兴趣的信息,还能有效助力搜索引擎优化(SEO),使网站更受搜索引擎青睐。在安企CMS中,通过强大的模板标签功能,我们可以非常灵活地获取并显示各种类型的文章列表。
安企CMS的模板系统借鉴了Django模板引擎的语法,整体风格自然流畅,对于熟悉前端开发的你来说,上手会非常快。在模板文件中,我们主要通过两种符号来操作:双花括号 {{ 变量 }} 用于输出变量内容,而单花括号加百分号 {% 标签 %} 则用于执行逻辑判断、循环或者调用特定的功能标签。
核心工具:archiveList 标签
要动态获取并显示文章列表,我们首先要认识安企CMS中的“万能”标签—— archiveList。这个标签是我们构建文章列表的基石,它提供了丰富的参数,可以帮助我们精准地筛选、排序和展示文章。
基本文章列表的获取
如果你只是想在一个页面上展示最新发布的几篇文章,不涉及分页,那么 archiveList 标签会非常简单实用。我们通常会给这个标签一个变量名,比如 articles,然后通过 for 循环遍历这个变量来显示每篇文章的信息。
例如,要在首页展示5篇最新文章的标题和简介:
<div class="latest-articles">
{% archiveList articles with type="list" limit="5" order="id desc" %}
{% for item in articles %}
<article>
<h3><a href="{{ item.Link }}">{{ item.Title }}</a></h3>
<p>{{ item.Description }}</p>
<footer>
<span>发布日期:{{ stampToDate(item.CreatedTime, "2006年01月02日") }}</span>
<span>浏览量:{{ item.Views }}</span>
</footer>
</article>
{% empty %}
<p>暂无文章内容。</p>
{% endfor %}
{% endarchiveList %}
</div>
在这段代码中:
archiveList articles定义了一个名为articles的变量,用来存储获取到的文章列表。type="list"表示我们获取的是一个固定数量的列表,而不是为分页做准备。limit="5"限制了只显示最新的5篇文章。order="id desc"告诉系统按照文章ID倒序排列,通常意味着最新发布的在前。你也可以使用order="views desc"按浏览量排序,或者order="sort desc"按后台自定义排序。for item in articles循环遍历articles变量中的每一篇文章,将当前文章的数据赋值给item。item.Link、item.Title、item.Description、item.Views都是每篇文章的属性,可以直接通过.语法访问。stampToDate(item.CreatedTime, "2006年01月02日")是一个非常有用的时间格式化函数。安企CMS中的时间戳通常是10位数字,你需要使用stampToDate并传入Go语言的时间格式(例如 “2006年01月02日”)才能将其转换为我们熟悉的日期格式。{% empty %}块会在articles列表为空时显示,避免页面空白。
如果你需要显示文章的缩略图,可以利用 item.Thumb 或 item.Logo 属性。为了确保图片存在时才显示,你可以结合 if 标签使用:
{% if item.Thumb %}
<img src="{{ item.Thumb }}" alt="{{ item.Title }}" class="article-thumb" />
{% endif %}
结合 moduleId 获取特定内容模型文章
安企CMS支持灵活的内容模型,这意味着你可能不仅有“文章”模型,还有“产品”、“案例”等其他模型。如果你想获取特定模型下的文章列表,就需要使用 moduleId 参数。通常,“文章模型”的 moduleId 为 1,“产品模型”为 2。你可以在后台的内容模型管理中查看具体ID。
例如,获取最新的5个产品列表:
{% archiveList products with type="list" moduleId="2" limit="5" order="id desc" %}
{% for product in products %}
<div class="product-item">
<a href="{{ product.Link }}">
{% if product.Logo %}
<img src="{{ product.Logo }}" alt="{{ product.Title }}" />
{% endif %}
<h3>{{ product.Title }}</h3>
</a>
<p>{{ product.Description }}</p>
</div>
{% endfor %}
{% endarchiveList %}
实现分页:让文章列表更易浏览
当文章数量很多时,分页是必不可少的功能。在安企CMS中,实现分页列表需要 archiveList 标签与 pagination 标签配合使用。
首先,archiveList 需要将 type 设置为 "page",并指定每页显示的数量 limit。然后,在 archiveList 标签的 endarchiveList 之后,我们使用 pagination 标签来生成分页导航。
以下是一个带分页的文章列表示例:
”`twig
{% archiveList articles with type="page" limit="10" %}
{% for article in articles %}
<article class="article-item">
<h2><a href="{{ article.Link }}">{{ article.Title }}</a></h2>
{% if article.Thumb %}
<img src="{{ article.Thumb }}" alt="{{ article.Title }}" />
{% endif %}
<p class="article-description">{{ article.Description }}</p>
<div class="article-meta">
<span>分类: {% categoryDetail with name="Title" id=article.CategoryId %}</span>
<span>浏览量: {{ article.Views }}</span>
<span>发布时间: {{ stampToDate(article.CreatedTime, "2006年01月02日") }}</span>
</div>
</article>
{% empty %}
<p>这里暂时没有文章。</p>
{% endfor %}
<div class="pagination-nav">
{% pagination pages with show="5" %}
<a href="{{ pages.FirstPage.Link }}" class="page-link">首页</a>
{% if pages.PrevPage %}<a href="{{ pages.