`archiveDetail` 标签如何获取特定文档的标题、内容、图片及自定义字段进行展示?

在AnQiCMS中,如何使用archiveDetail标签精细控制文档内容展示?

AnQiCMS作为一个高效、灵活的内容管理系统,其核心优势之一在于其强大的内容展示能力。对于网站上每一篇独立的文章、产品详情或其他任何“文档”类型的内容,我们都希望能够精细控制它们在前台页面的展示方式。这正是archiveDetail标签大展身手的地方。它不仅能帮助我们获取文档的基础信息,还能轻松调取其关联图片、自定义字段等多样化内容,为网站提供丰富的动态展示效果。

认识 archiveDetail 标签

archiveDetail标签专门用于获取特定文档的详细数据。在多数情况下,当您访问一个具体的文档详情页时,它会自动识别当前页面的文档ID并加载其所有信息。但如果您需要在非详情页或其他位置展示某个特定文档的内容,也可以通过指定参数来实现。

它的基本使用形式通常是这样的: {% archiveDetail 变量名称 with name="字段名称" id="1" %}

这里,变量名称是一个可选的占位符,如果您想将获取到的数据存储起来以便后续更复杂的处理,可以为其命名;如果不指定,标签会直接输出字段内容。name="字段名称"则是我们指定要获取哪个具体信息的关键,而id="1"(或者token="文档别名")则用于指定您想获取哪一篇文档的数据。通常,在文档详情页中,您可以省略idtoken,系统会自动获取当前文档的数据。

展示文档的核心信息

了解了基本语法后,我们就可以开始获取文档的各项核心内容了。

文档标题与描述

获取文档的标题和描述是最基础的需求。您可以使用Title来获取文档标题,以及Description来获取文档简介。

例如,要在页面中显示当前文档的标题: <h1>{% archiveDetail with name="Title" %}</h1>

显示文档描述则类似: <p>{% archiveDetail with name="Description" %}</p>

如果您想获取指定ID文档的标题,可以这样: <h2>特定文档标题:{% archiveDetail with name="Title" id="10" %}</h2>

文档内容:处理富文本与Markdown

文档内容是详情页的核心部分,通常包含了复杂的HTML结构或Markdown格式的文本。archiveDetail通过name="Content"来获取这部分数据。

由于内容可能包含HTML标签,为了确保浏览器能够正确解析并渲染这些内容,您需要配合使用|safe过滤器。如果您的文档内容使用了Markdown编辑器,并且希望在前端自动渲染成HTML,可以在Content字段后添加render=true参数。

示例: <div>{% archiveDetail docContent with name="Content" render=true %}{{ docContent|safe }}</div>

此外,如果您的网站启用了图片懒加载功能,可以通过lazy="data-src"这样的参数,让系统在输出HTML内容时自动替换图片src属性为指定名称(例如data-src),方便前端懒加载脚本识别。

时间信息:发布与更新

文档的发布时间和更新时间是用户了解内容时效性的重要指标。archiveDetail提供了CreatedTime(添加时间)和UpdatedTime(更新时间)字段。这些字段返回的是时间戳,我们可以通过format参数直接在标签内对其进行格式化,例如显示为“2023-10-26”。

示例: <p>发布日期:{% archiveDetail with name="CreatedTime" format="2006-01-02" %}</p> <p>更新时间:{% archiveDetail with name="UpdatedTime" format="2006-01-02 15:04" %}</p>

灵活展示文档图片

图片是内容不可或缺的一部分,AnQiCMS为文档提供了多种图片类型:

封面首图与缩略图

Logo字段通常代表文档的封面首图,而Thumb字段则指经过系统处理的缩略图。它们可以直接通过name参数获取图片URL。

示例: <img src="{% archiveDetail with name="Logo" %}" alt="{% archiveDetail with name="Title" %}" /> <img src="{% archiveDetail with name="Thumb" %}" alt="{% archiveDetail with name="Title" %}" />

多图组展示

如果您的文档中包含了多张图片(例如产品详情页的轮播图),Images字段会返回一个图片URL数组。这时候,您需要定义一个变量来接收这个数组,并通过for循环来遍历并展示每一张图片。

示例:

{% archiveDetail galleryImages with name="Images" %}
<div class="product-gallery">
  {% for imgUrl in galleryImages %}
    <img src="{{ imgUrl }}" alt="图片描述" />
  {% endfor %}
</div>

访问与展示自定义字段

AnQiCMS的一大亮点是其灵活的内容模型,允许用户为不同类型的文档自定义各种字段。archiveDetail标签同样支持对这些自定义字段的调用。

假设您为“产品”模型添加了一个名为Material(材质)的自定义字段,或者一个Author(作者)字段:

直接调用自定义字段

如果您知道自定义字段的调用字段名称(在后台内容模型设置中定义),可以直接通过name参数进行调用。

示例: <p>产品材质:{% archiveDetail with name="Material" %}</p> <p>文章作者:{% archiveDetail with name="Author" %}</p>

遍历所有自定义字段

在某些场景下,您可能希望动态地列出文档的所有附加参数(例如产品规格列表),而不需要预先知道每个字段的名称。这时,可以使用archiveParams标签来获取这些字段,然后通过循环来展示。archiveParams会返回一个包含字段名称(Name)和字段值(Value)的对象数组。

示例:

<div class="product-specs">
  <h3>产品参数</h3>
  {% archiveParams docParams %}
  {% for param in docParams %}
    <p><span>{{ param.Name }}:</span><span>{{ param.Value }}</span></p>
  {% endfor %}
  {% endarchiveParams %}
</div>

结合关联信息进行展示

在文档详情页,除了文档本身的信息,我们通常还需要展示其所属分类和关联标签。

显示所属分类信息

文档所属的分类信息可以通过archiveDetailCategory字段直接获取,它会返回一个分类对象,您可以从中提取分类的ID、标题、链接等。

示例:

{% archiveDetail currentCategory with name="Category" %}
<p>所属分类:<a href="{{ currentCategory.Link }}">{{ currentCategory.Title }}</a></p>

展示文档标签

文档标签通常由tagList标签获取,并传入当前文档的ID作为参数,然后通过循环展示。

示例: “`twig

标签: {% tagList