在安企CMS中管理和展示网站内容,尤其是让访客看到最新发布文章或产品的动态,是提升用户体验和网站活力的重要一环。一个动态更新的网站不仅能吸引用户持续访问,对搜索引擎优化(SEO)也大有裨益。安企CMS提供了强大且灵活的标签系统,让我们能够轻松实现这一需求。
核心工具:archiveList 标签
要在安企CMS网站的任何页面上显示最新文章或产品列表,最核心的工具就是 archiveList 标签。这个标签专门用于获取各类文档(包括文章、产品等,因为在安企CMS中,它们都作为“文档”的一种形式进行管理)的列表数据。
使用 archiveList 标签的基本结构通常是这样的:
{% archiveList 变量名称 with 参数 %}
{# 循环展示内容的区域 #}
{% endarchiveList %}
其中,变量名称 可以是你自定义的,用于在标签内部循环获取每一项数据;参数 则是你用来筛选、排序和限制列表显示的关键。
理解关键参数,定制你的列表
要精准地显示“最新”文章或产品,我们需要掌握 archiveList 标签的几个关键参数:
moduleId:告诉系统你想展示什么类型的内容 安企CMS支持多种内容模型,例如文章模型和产品模型。不同的moduleId代表着不同的内容类型。通常情况下,文章模型可能对应moduleId="1",而产品模型则对应moduleId="2"。如果你不确定具体模型的ID,可以在安企CMS后台的“内容管理” -> “内容模型”中查看并确认。通过指定moduleId,你可以选择只显示文章,或者只显示产品。order:时间序,确保“最新”性 要显示“最新”的内容,排序方式至关重要。我们可以使用order="id desc"这个参数。id通常代表着内容的发布顺序(ID越大,通常发布时间越晚),而desc意味着降序排列,这样就能确保最新发布的内容排在前面。limit:精确控制显示数量 网站的不同区域可能需要显示不同数量的最新内容,例如首页可能只显示5条,而某个专题页可能需要10条。limit参数让你能够精确控制列表的显示条数。例如,limit="5"将只显示最新的5条内容。type:列表模式还是分页模式type="list":这是默认模式,它会按照limit参数指定的数量,一次性列出所有符合条件的内容。适用于内容量不大或只显示精选几条的场景。type="page":当内容量较大,需要进行分页显示时,就应该使用type="page"。配合pagination标签,你可以为用户提供完整的翻页体验,一次显示一页内容。
categoryId:指定特定分类内容(可选) 如果你希望只显示某个特定分类下的最新文章或产品,可以使用categoryId参数。你可以传入单个分类ID(如categoryId="10"),也可以传入多个分类ID(如categoryId="10,12,15"),用逗号分隔。
实战演练:一步步实现最新列表
了解了这些参数,我们来看看如何在实际页面中应用它们:
场景一:在网站首页显示最新的文章列表
假设你希望在首页的侧边栏显示5条最新发布的技术文章。
<div class="latest-articles-widget">
<h2>最新技术文章</h2>
<ul>
{% archiveList latestTechArticles with moduleId="1" order="id desc" limit="5" %}
{% for item in latestTechArticles %}
<li>
<a href="{{ item.Link }}">{{ item.Title }}</a>
<time>{{ stampToDate(item.CreatedTime, "2006-01-02") }}</time>
</li>
{% empty %}
<li>暂时还没有发布任何文章。</li>
{% endfor %}
{% endarchiveList %}
</ul>
</div>
这段代码会从文章模型(moduleId="1")中,按ID降序(即最新发布)获取5条文章,并展示它们的标题和发布日期。stampToDate 标签帮助我们把时间戳格式化成可读的日期。
场景二:在产品展示页面显示最新上架的产品(带缩略图)
如果你有一个专门的产品页面,想要突出显示4款最新上架的产品,并带上它们的缩略图:
<div class="new-products-section">
<h2>新品推荐</h2>
<div class="product-grid">
{% archiveList newArrivalProducts with moduleId="2" order="id desc" limit="4" %}
{% for item in newArrivalProducts %}
<div class="product-card">
<a href="{{ item.Link }}">
<img src="{{ item.Thumb }}" alt="{{ item.Title }}" class="product-thumbnail">
<h3>{{ item.Title }}</h3>
</a>
</div>
{% empty %}
<p>抱歉,目前还没有新品上架。</p>
{% endfor %}
{% endarchiveList %}
</div>
</div>
这里我们指定 moduleId="2" 来获取产品数据,并且利用 item.Thumb 来显示产品的缩略图。
场景三:在分类页面显示该分类下的最新内容(带分页)
当你进入一个文章分类页面时,通常希望看到该分类下的最新文章,并且可以进行分页浏览。
<div class="category-articles">
<h1>{{ category.Title }} - 最新内容</h1>
<ul>
{% archiveList articlesPaged with type="page" order="id desc" limit="10" %} {# categoryId 会自动获取当前分类ID #}
{% for item in articlesPaged %}
<li>
<a href="{{ item.Link }}">
{% if item.Thumb %}<img src="{{ item.Thumb }}" alt="{{ item.Title }}" width="100">{% endif %}
<span>{{ item.Title }}</span>
<time>{{ stampToDate(item.CreatedTime, "2006-01-02") }}</time>
</a>
</li>
{% empty %}
<li>此分类下暂时没有内容。</li>
{% endfor %}
{# 分页导航 #}
{% pagination pages with show="5" %}
<nav class="pagination-nav">
{% if pages.PrevPage %}<a href="{{ pages.PrevPage.Link }}" class="prev-page">上一页</a>{% endif %}
{% for pageItem in pages.Pages %}
<a href="{{ pageItem.Link }}" class="page-number {% if pageItem.IsCurrent %}active{% endif %}">{{ pageItem.Name }}</a>
{% endfor %}
{% if pages.NextPage %}<a href="{{ pages.NextPage.Link }}" class="next-page">下一页</a>{% endif %}
</nav>
{% endpagination %}
{% endarchiveList %}
</ul>
</div>
在这个例子中,当页面本身是一个分类页时,archiveList 标签会智能地获取当前分类的ID,无需手动指定 categoryId。type="page" 模式与 pagination 标签结合,为用户提供了流畅的翻页体验。
小贴士:无内容时的友好提示
在所有的 archiveList 标签内部,我们都使用了 {% empty %} ... {% endfor %} 结构。这是一个非常实用的功能,当 archiveList 没有找到任何符合条件的内容时,它会显示 empty 块内的提示信息,而不是留下一片空白,大大提升了用户体验。
总结
通过 archiveList 标签及其灵活的参数组合,安企CMS让展示网站最新文章或产品列表变得直观而高效。无论是首页的精选内容,还是分类页面的详细列表,我们都能根据实际需求轻松定制。掌握这些标签的使用,能够帮助你更好地利用安企CMS的强大功能,打造一个内容丰富、动态更新的网站。
常见问题 (FAQ)
**