AnQiCMS模板中Tag文档列表如何筛选特定模型的文档?

作为一名资深的网站运营专家,我深知内容管理系统(CMS)的灵活性是提升运营效率和满足多变业务需求的关键。安企CMS(AnQiCMS)凭借其强大的内容模型和模板系统,为内容运营提供了极大的便利。今天,我们就来深入探讨一个在实际运营中非常实用的场景:如何在安企CMS的模板中,精准地从Tag文档列表中筛选出特定内容模型的文档。

灵活驾驭内容:安企CMS的“模型”与“标签”

在安企CMS中,内容管理的核心在于“内容模型”和“标签”这两大功能。理解它们是实现精准筛选的前提。

内容模型,顾名思义,是定义不同类型内容结构的基础。无论是普通的“文章”,还是带有价格、库存等属性的“产品”,或是其他自定义的“活动”、“案例”模型,它们都拥有各自独特的字段。安企CMS的灵活内容模型设计(如AnQiCMS 项目优势.md中提到的“允许用户根据业务需求自定义内容模型”)使得我们可以根据实际业务需求,为不同类型的内容创建专属的管理和展示结构。例如,默认的“文章模型”和“产品模型”(参考help-content-module.md),各有其特点。

标签(Tag),则是一种跨模型、跨分类的内容归类方式。它允许我们将具有相同主题、关键词或属性的文档关联起来,而无需受限于传统的分类层级。比如,一个“新品上市”的Tag,可能同时关联着新产品介绍的“文章”,以及新产品的“产品”页面。help-content-tag.md也提到“文档标签不分分类和模型,同一个标签可以同时给不同的内容模型的文档标记。”这种灵活性在内容营销和SEO策略中尤为重要。

当这两种强大的功能结合起来时,我们就能构建出既结构清晰又主题丰富的网站内容体系。但有时,我们可能希望在展示某个Tag下的内容时,只显示特定模型下的文档,比如,在一个“新品上市”的Tag页面,我们只想展示具体的新产品(产品模型),而不是新产品的市场分析文章(文章模型)。这时,就需要用到tagDataList标签的筛选能力了。

核心解密:tagDataList 标签的“模型”筛选能力

在安企CMS的模板系统中,用于调用Tag下文档列表的核心标签是{% tagDataList %}。根据design-tag.mdtag-tagDataList.md的说明,这个标签提供了多种参数来定制文档的显示方式。其中,解决我们问题的关键参数便是——moduleId

moduleId参数允许你指定要获取文档列表的特定内容模型ID。这意味着,即使某个Tag关联了多种内容模型下的文档,通过设置moduleId,你也能轻松地将其筛选出来,只展示你想要的那部分。

实战演练:筛选特定模型文档

现在,让我们通过一个实际的例子,看看如何在模板中运用moduleId进行筛选。

第一步:确定目标模型ID

首先,你需要知道你想要筛选的“内容模型”对应的ID。你可以通过以下步骤在安企CMS后台找到它:

  1. 登录安企CMS后台。
  2. 导航到 内容管理 -> 内容模型
  3. 在这里,你会看到所有已创建的内容模型(包括系统默认的“文章模型”和“产品模型”以及你自定义的模型)。每个模型都会有一个对应的ID。
    • 通常,“文章模型”的ID为1,“产品模型”的ID为2
    • 请记住你目标模型对应的数字ID,例如,我们假设要筛选的是“产品模型”,其ID为2

第二步:编写模板代码进行筛选

假设我们正在编辑Tag文档列表页(例如tag/list.html),并希望在该页面展示当前Tag下所有属于“产品模型”的文档。

我们将使用tagDataList标签,并加入moduleId="2"来指定筛选产品模型。

”`twig {# 首先,获取当前Tag的详细信息,这通常是在tag/list.html模板中默认可用的 #} {# 如果不是tag/list.html,你可能需要用tagDetail标签获取当前TagID,例如 {% tagDetail currentTag with name=“Id” %} #}

当前标签:{% tagDetail with name="Title" %}

{# 使用 tagDataList 标签,并明确指定 moduleId 为 2 (产品模型) #} {% tagDataList archives with type=“page” limit=“10” moduleId=“2” %}

{% for item in archives %}
    <div class="product-item">
        <a href="{{item.Link}}">
            {% if item.Thumb %}
                <img src="{{item.Thumb}}" alt="{{item.Title}}">
            {% else %}
                <img src="{% system with name='TemplateUrl' %}/images/default-product.png" alt="默认产品图">
            {% endif %}
            <h3>{{item.Title}}</h3>
        </a>
        <p>{{item.Description|truncatechars:80}}</p>
        {# 假设产品模型有自定义字段“price”,可以通过 item.price 调用 #}
        {# 可以在这里进一步调用产品模型的特有字段,例如:{{item.price}} #}
        <span class="view-count">{{item.Views}} 浏览</span>
        <span class="publish-date">{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
    </div>
{% empty %}
    <p>当前标签下,产品模型没有任何相关文档。</p>
{% endfor %}

{# 如果 type="page",则需要配合分页标签显示分页 #}
{% pagination pages with show="5" %}
    <div class="pagination-nav">
        {% if pages.FirstPage %}<a href="{{pages.FirstPage.Link}}">首页</a>{% endif %}
        {% if pages.PrevPage %}<a href="{{pages.PrevPage.Link}}">上一页</a>{% endif %}
        {% for page_item in pages.Pages %}
            <a class="{%