在AnQiCMS中,如何使用archiveDetail标签精细控制文档内容展示?
AnQiCMS作为一个高效、灵活的内容管理系统,其核心优势之一在于其强大的内容展示能力。对于网站上每一篇独立的文章、产品详情或其他任何“文档”类型的内容,我们都希望能够精细控制它们在前台页面的展示方式。这正是archiveDetail标签大展身手的地方。它不仅能帮助我们获取文档的基础信息,还能轻松调取其关联图片、自定义字段等多样化内容,为网站提供丰富的动态展示效果。
认识 archiveDetail 标签
archiveDetail标签专门用于获取特定文档的详细数据。在多数情况下,当您访问一个具体的文档详情页时,它会自动识别当前页面的文档ID并加载其所有信息。但如果您需要在非详情页或其他位置展示某个特定文档的内容,也可以通过指定参数来实现。
它的基本使用形式通常是这样的:
{% archiveDetail 变量名称 with name="字段名称" id="1" %}
这里,变量名称是一个可选的占位符,如果您想将获取到的数据存储起来以便后续更复杂的处理,可以为其命名;如果不指定,标签会直接输出字段内容。name="字段名称"则是我们指定要获取哪个具体信息的关键,而id="1"(或者token="文档别名")则用于指定您想获取哪一篇文档的数据。通常,在文档详情页中,您可以省略id或token,系统会自动获取当前文档的数据。
展示文档的核心信息
了解了基本语法后,我们就可以开始获取文档的各项核心内容了。
文档标题与描述
获取文档的标题和描述是最基础的需求。您可以使用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>
结合关联信息进行展示
在文档详情页,除了文档本身的信息,我们通常还需要展示其所属分类和关联标签。
显示所属分类信息
文档所属的分类信息可以通过archiveDetail的Category字段直接获取,它会返回一个分类对象,您可以从中提取分类的ID、标题、链接等。
示例:
{% archiveDetail currentCategory with name="Category" %}
<p>所属分类:<a href="{{ currentCategory.Link }}">{{ currentCategory.Title }}</a></p>
展示文档标签
文档标签通常由tagList标签获取,并传入当前文档的ID作为参数,然后通过循环展示。
示例: “`twig
标签: {% tagList