如何结合`archiveList`标签,根据`moduleId`筛选并展示特定内容模型的文档列表?

📅 👁️ 57

AnQiCMS 内容模型深度指南:如何用 archiveList 精准筛选文档列表

作为一位深耕网站运营多年的老兵,我深知一个灵活高效的内容管理系统对企业网站的重要性。AnQiCMS 凭借其基于 Go 语言的高效架构和高度可定制化的特性,在内容管理领域为我们提供了强大的支持。其中,内容模型功能无疑是 AnQiCMS 的一大亮点,它允许我们根据业务需求,创建并管理不同类型的内容结构,比如文章、产品、案例、新闻、活动等等。

今天,我们就来深入探讨 AnQiCMS 中一个极其常用且强大的模板标签——archiveList,并聚焦于如何结合 moduleId 参数,实现对特定内容模型文档列表的精准筛选和展示。这不仅能让您的网站内容井然有序,更能为用户提供更清晰、更有针对性的浏览体验。

灵活的内容模型:精细化管理的基石

在 AnQiCMS 中,内容模型是定义内容类型和其字段结构的核心。系统默认内置了“文章模型”和“产品模型”,但真正的力量在于您可以根据实际业务需求创建无限多的自定义模型。例如,如果您运营一个房地产网站,您可以创建“房源模型”;如果是美食博客,则可以创建“食谱模型”。每个模型都有一个唯一的标识符,我们称之为 moduleId

这个 moduleId 就像是内容世界的“身份证号”。当您发布一篇“文章”时,它就被赋予了文章模型的 moduleId;发布一件“产品”时,它又有了产品模型的 moduleId。正是这个小小的 moduleId,让我们能够在大海般的内容中,精准地捞取我们想要的信息。

archiveList 标签:内容展示的核心驱动

archiveList 是 AnQiCMS 模板中最常用的标签之一,它负责从数据库中获取并展示文档(即我们创建的各种内容)列表。无论是首页的最新动态、侧边栏的热门推荐,还是分类页的详细列表,archiveList 都扮演着关键角色。

它的基本用法是循环遍历内容,并取出每个内容的属性进行展示。而要让这个标签变得“聪明”,能够识别和筛选不同模型的内容,moduleId 参数就显得尤为重要。

牵手 moduleId:精准筛选你的内容列表

当我们需要在一个页面上,或者网站的某个特定区域,只展示某一类内容模型下的文档时,moduleId 参数就是我们的不二选择。通过在 archiveList 标签中明确指定 moduleId,系统就能准确地过滤出属于该内容模型的文档列表。

例如,假设您的“文章模型”的 moduleId1,而“产品模型”的 moduleId2。如果您想在首页的一个区域展示最新的文章列表,在另一个区域展示推荐的产品列表,您就需要分别使用两个 archiveList 标签,并通过 moduleId 进行区分。

{# 获取文章模型的文档列表,假设文章模型的 moduleId 为 1 #}
{% archiveList latestArticles with moduleId="1" type="list" limit="5" order="id desc" %}
    {% for item in latestArticles %}
        <div class="news-item">
            <a href="{{ item.Link }}">
                <h4>{{ item.Title }}</h4>
                <p>{{ item.Description|truncatechars:100 }}</p> {# 截取描述,保持简洁 #}
                <span>发布日期:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
            </a>
        </div>
    {% empty %}
        <p>暂无最新文章。</p>
    {% endfor %}
{% endarchiveList %}

{# 获取产品模型的文档列表,假设产品模型的 moduleId 为 2 #}
{% archiveList featuredProducts with moduleId="2" type="list" limit="3" order="views desc" %}
    {% for item in featuredProducts %}
        <div class="product-card">
            <a href="{{ item.Link }}">
                {% if item.Thumb %}
                    <img src="{{ item.Thumb }}" alt="{{ item.Title }}">
                {% endif %}
                <h5>{{ item.Title }}</h5>
                <p>浏览量:{{ item.Views }}</p>
            </a>
        </div>
    {% empty %}
        <p>暂无推荐产品。</p>
    {% endfor %}
{% endarchiveList %}

在上面的例子中,我们清晰地看到了 moduleId="1"moduleId="2" 是如何将两个 archiveList 标签拉开了距离,让它们分别只负责展示各自内容模型下的文档。

除了 moduleId,您还可以结合其他参数来进一步优化您的内容列表:

  • type:列表类型
    • type="list":用于获取固定数量的列表,例如首页的“最新文章”区块,只显示前 5 篇。
    • type="page":用于需要分页的列表,例如文章列表页或产品展示页,配合 pagination 标签使用。
  • limit:显示数量
    • 控制列表返回的文档数量,如 limit="10" 表示获取 10 篇文档。
  • order:排序方式
    • order="id desc":按文档 ID 倒序,通常用于显示最新发布的文档。
    • order="views desc":按浏览量倒序,适用于热门排行等。
    • order="sort desc":按后台自定义排序,提供运营上的灵活性。
  • categoryId:分类 ID
    • 在特定模型下,您可以进一步通过 categoryId 筛选属于某个分类的文档。例如,moduleId="1" categoryId="10" 将只获取“文章模型”下,且分类 ID 为 10 的文章。

实战演练:构建多模型内容列表

让我们通过一个更完整的例子,来展示如何在 AnQiCMS 模板中,利用 archiveListmoduleId 参数,优雅地展示不同内容模型的文档列表。假设我们有一个网站首页,需要展示“最新新闻”和“特色服务”两个区域。新闻属于“文章模型”(moduleId=1),特色服务属于“服务模型”(moduleId=3,这是一个自定义模型)。

”`twig

{# 最新新闻区 - 假设新闻对应文章模型 moduleId 为 1 #}
<section class="latest-news">
    <h2>最新新闻</h2>
    <div class="news-list">
        {% archiveList newsItems with moduleId="1" type="list" limit="4" order="id desc" %}
            {% for item in newsItems %}
                <article class="news-card">
                    {% if item.Thumb %}
                        <img src="{{ item.Thumb }}" alt="{{ item.Title }}" class="news-thumbnail">
                    {% endif %}
                    <div class="news-content">
                        <h3><a href="{{ item.Link }}">{{ item.Title }}</a></h3>
                        <p>{{ item.Description|truncatechars:120 }}</p>
                        <time datetime="{{ stampToDate(item.CreatedTime, "2006-01-02T15:04:05") }}">
                            {{ stampToDate(item.CreatedTime, "2006年01月02日") }}
                        </time>
                        <span class="news-views">浏览:{{ item.Views }}</span>
                    </div>
                </article>
            {% empty %}
                <p>目前还没有新闻发布,敬请期待!</p>
            {% endfor %}
        {% endarchiveList %}
    </div>
</section>

<hr>

{# 特色服务区 - 假设服务模型 moduleId 为 3 #}

相关文章

`moduleDetail`标签在非模型相关页面(如网站首页)是否可用?如何安全地获取和使用模型信息?

安企CMS(AnQiCMS)以其灵活的内容模型和强大的模板标签系统,为网站运营者提供了极大的便利。然而,在实际操作中,我们常常会遇到一个疑问:像`moduleDetail`这样的标签,通常用于获取特定内容模型的信息,在诸如网站首页这样“非模型相关”的页面中,它是否依然可用?又该如何安全、有效地利用它来获取所需的模型信息呢?作为一名资深的网站运营专家,我将带您深入探讨这一话题。 ## 探索

2025-11-07

我想在模板中根据内容模型的ID来显示一个特定的图标或样式,`moduleDetail`标签能提供哪些信息辅助实现?

安企CMS模板定制秘籍:巧用`moduleDetail`标签,让不同内容模型焕发独特光彩 在当今内容驱动的数字世界里,一个网站的吸引力不仅来源于其内容的质量,更在于其展示形式的精妙与用户体验的流畅。安企CMS深知这一点,它以其强大的内容模型功能,赋予了运营者高度的灵活性,能够根据不同的业务需求,创建文章、产品、活动等多样化的内容结构。然而,仅仅拥有灵活的内容模型还不够

2025-11-07

`moduleDetail`标签获取的模型链接(`Link`)是绝对路径还是相对路径,是否支持自定义?

## 安企CMS `moduleDetail` 标签:模型链接路径是绝对还是相对?自定义的奥秘全解析 作为一名资深的网站运营专家,我深知每一个CMS系统在内容呈现上的细微之处,都可能对网站的SEO表现和用户体验产生深远影响。安企CMS(AnQiCMS)凭借其Go语言的高效基因和企业级定位,在URL结构管理方面也展现出了其独到之处。今天,我们就来深入探讨一个在模板开发和内容运营中常遇到的问题

2025-11-07

如何利用`moduleDetail`标签,在模板中动态显示不同内容模型的SEO关键词(`Keywords`)和简介(`Description`)?

在安企CMS的强大生态中,灵活的内容模型是其核心优势之一,它赋予了我们根据业务需求构建多元内容形态的能力。作为一位深耕网站运营多年的专家,我深知,无论内容多么丰富多彩,如果无法被搜索引擎高效识别并精准呈现给目标用户,其价值便会大打折扣。而这一切的基石,正是卓越的SEO优化。 安企CMS在SEO方面提供了诸多高级工具,从伪静态规则到Sitemap生成,再到关键词库管理

2025-11-07

当内容模型有自定义字段(例如`author`),如何在`archiveDetail`标签中调用这些模型特有的自定义字段?

## 解锁安企CMS内容模型自定义字段的魅力:`archiveDetail`标签的高级应用 作为一名资深的网站运营专家,我深知灵活的内容管理系统对于提升运营效率、实现个性化内容展示的重要性。安企CMS(AnQiCMS)凭借其基于Go语言的高效架构和卓越的可定制性,在这一方面表现得尤为出色。其核心亮点之一便是“灵活的内容模型”功能,它允许我们根据具体业务需求,为不同类型的内容创建专属的字段

2025-11-07

`archiveParams`标签与`moduleDetail`标签在获取内容模型自定义字段信息上有什么协作或区别?

在数字内容日益多样化的今天,一个灵活的内容管理系统(CMS)对于企业和自媒体运营者而言,无疑是提升效率、实现个性化展示的关键。安企CMS(AnQiCMS)凭借其强大的内容模型功能,让用户能够根据自身业务需求,深度定制内容结构。然而,当我们深入到模板层面,尝试获取这些定制化的数据时,可能会遇到一些疑问:`archiveParams` 标签与 `moduleDetail` 标签

2025-11-07

我能否为不同内容模型定义不同的“推荐属性”类型(例如文章模型是“头条”,产品模型是“新品”)?

作为一名资深的网站运营专家,我深知在内容管理中,如何精准地对不同类型的内容进行推荐,是提升用户体验和运营效率的关键。安企CMS以其灵活的内容模型设计,确实为我们提供了强大的内容组织能力。而关于“推荐属性”的差异化定义,这其中蕴含着一些精妙的运营策略和技术实现方法,值得我们深入探讨。 ### 安企CMS:内容模型与“推荐属性”的灵活运用之道 很多运营人员在初次接触安企CMS时,都会有一个疑问

2025-11-07

如何在模板中动态判断某个内容模型的自定义字段是否被设置为必填项?

安企CMS作为一款高效、灵活的内容管理系统,其强大的内容模型自定义功能,确实为企业和运营者带来了极大的便利。在日常的内容运营中,我们经常会根据业务需求,为不同的内容模型(例如文章、产品、活动等)添加各种自定义字段。这些字段有些是可选的,有些则是必须填写的,即“必填项”。那么,如何在前端模板中动态地判断某个自定义字段是否被设置为必填项,并据此调整页面展示逻辑呢

2025-11-07