如何显示网站的最新文章或产品列表?

在安企CMS中管理和展示网站内容,尤其是让访客看到最新发布文章或产品的动态,是提升用户体验和网站活力的重要一环。一个动态更新的网站不仅能吸引用户持续访问,对搜索引擎优化(SEO)也大有裨益。安企CMS提供了强大且灵活的标签系统,让我们能够轻松实现这一需求。

核心工具:archiveList 标签

要在安企CMS网站的任何页面上显示最新文章或产品列表,最核心的工具就是 archiveList 标签。这个标签专门用于获取各类文档(包括文章、产品等,因为在安企CMS中,它们都作为“文档”的一种形式进行管理)的列表数据。

使用 archiveList 标签的基本结构通常是这样的:

{% archiveList 变量名称 with 参数 %}
    {# 循环展示内容的区域 #}
{% endarchiveList %}

其中,变量名称 可以是你自定义的,用于在标签内部循环获取每一项数据;参数 则是你用来筛选、排序和限制列表显示的关键。

理解关键参数,定制你的列表

要精准地显示“最新”文章或产品,我们需要掌握 archiveList 标签的几个关键参数:

  1. moduleId:告诉系统你想展示什么类型的内容 安企CMS支持多种内容模型,例如文章模型和产品模型。不同的 moduleId 代表着不同的内容类型。通常情况下,文章模型可能对应 moduleId="1",而产品模型则对应 moduleId="2"。如果你不确定具体模型的ID,可以在安企CMS后台的“内容管理” -> “内容模型”中查看并确认。通过指定 moduleId,你可以选择只显示文章,或者只显示产品。

  2. order:时间序,确保“最新”性 要显示“最新”的内容,排序方式至关重要。我们可以使用 order="id desc" 这个参数。id 通常代表着内容的发布顺序(ID越大,通常发布时间越晚),而 desc 意味着降序排列,这样就能确保最新发布的内容排在前面。

  3. limit:精确控制显示数量 网站的不同区域可能需要显示不同数量的最新内容,例如首页可能只显示5条,而某个专题页可能需要10条。limit 参数让你能够精确控制列表的显示条数。例如,limit="5" 将只显示最新的5条内容。

  4. type:列表模式还是分页模式

    • type="list":这是默认模式,它会按照 limit 参数指定的数量,一次性列出所有符合条件的内容。适用于内容量不大或只显示精选几条的场景。
    • type="page":当内容量较大,需要进行分页显示时,就应该使用 type="page"。配合 pagination 标签,你可以为用户提供完整的翻页体验,一次显示一页内容。
  5. 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,无需手动指定 categoryIdtype="page" 模式与 pagination 标签结合,为用户提供了流畅的翻页体验。

小贴士:无内容时的友好提示

在所有的 archiveList 标签内部,我们都使用了 {% empty %} ... {% endfor %} 结构。这是一个非常实用的功能,当 archiveList 没有找到任何符合条件的内容时,它会显示 empty 块内的提示信息,而不是留下一片空白,大大提升了用户体验。

总结

通过 archiveList 标签及其灵活的参数组合,安企CMS让展示网站最新文章或产品列表变得直观而高效。无论是首页的精选内容,还是分类页面的详细列表,我们都能根据实际需求轻松定制。掌握这些标签的使用,能够帮助你更好地利用安企CMS的强大功能,打造一个内容丰富、动态更新的网站。


常见问题 (FAQ)

**