安企CMS在模板中如何使用`archiveDetail`标签来获取并显示单个文档的详细信息?

在安企CMS的强大功能支持下,我们能够灵活地构建各类网站内容。其中,显示单个文档的详细信息是网站内容展示的核心需求之一。安企CMS为此提供了专门的模板标签——archiveDetail,它能帮助我们在模板中轻松获取并呈现文档的所有相关数据。

使用archiveDetail标签,即使是对模板语言不甚熟悉的用户也能快速上手,将技术信息转化为网站上自然流畅的阅读体验。

理解archiveDetail标签的作用

archiveDetail标签的主要职责,就是从数据库中精确地抓取某一篇文档的所有细节数据。这些数据可以是文档的标题、内容、发布时间、分类信息,甚至是你为该文档自定义的额外字段。它通常用在文章详情页、产品详情页等需要展示单一内容完整信息的场景。

这个标签的基本使用方式非常直观,通常以这样的结构出现: {% archiveDetail 变量名称 with name="字段名称" id="1" %}

其中:

  • 变量名称是一个可选的参数。如果你设置了它,获取到的数据会被赋值给这个变量,方便你在后续的模板代码中进行更复杂的处理。如果不设置,标签会直接输出字段的值。
  • name="字段名称"用于指定你想获取的文档的具体哪个字段信息,比如"Title"获取标题,"Content"获取内容。
  • id="1"是用来指定你想获取哪一篇文档的数据。通常情况下,当你已经在文档详情页(比如网址是 /article/100.html)时,系统会自动识别当前文档的ID,你无须手动设置idtoken参数,archiveDetail会默认获取当前页面的文档信息,非常便捷。但如果你想在当前页面显示 另一篇 特定文档的信息,那么就可以通过idtoken来精确指定。
  • siteId参数则是在多站点管理场景下使用的,如果你有多个站点并需要调用其他站点的数据,可以指定siteId

如何利用archiveDetail显示文档的各项信息

让我们通过具体的例子,来看看如何运用archiveDetail来丰富你的文档详情页。

获取文档基本信息

文档的标题、链接、描述、ID和浏览量是核心元素。我们可以这样轻松获取它们:

<h1>{% archiveDetail with name="Title" %}</h1>
<p>文档ID:{% archiveDetail with name="Id" %}</p>
<p>访问量:{% archiveDetail with name="Views" %}</p>
<p>摘要:{% archiveDetail with name="Description" %}</p>
<a href="{% archiveDetail with name="Link" %}">查看原文</a>

在实际的文档详情页中,我们通常会省略id参数,因为archiveDetail默认会获取当前页面的文档数据,让代码更简洁。

展示文档内容主体

Content字段是文档的核心。由于它通常包含富文本格式(HTML),因此在使用时需要特别注意一个|safe过滤器。这个过滤器告诉模板引擎,这段内容是安全的,不需要进行HTML转义,从而确保页面能正确渲染出加粗、图片等富文本效果。如果你的内容是Markdown格式,还可以通过render=true参数让系统自动将其转换为HTML。

<div class="article-content">
    {%- archiveDetail articleContent with name="Content" render=true %}
    {{ articleContent|safe }}
</div>

如果你的图片需要懒加载,并且你的懒加载插件需要将src属性替换为data-src,你可以在Content字段的调用中加入lazy="data-src"

<div class="article-content">
    {%- archiveDetail articleContent with name="Content" lazy="data-src" render=true %}
    {{ articleContent|safe }}
</div>

处理文档中的图片

文档通常会有封面图、缩略图,甚至是一组图片。 LogoThumb分别用于获取文档的封面首图和缩略图:

<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 %}循环来遍历并显示它们:

<div class="gallery">
    {% archiveDetail archiveImages with name="Images" %}
    {% for imgUrl in archiveImages %}
        <img src="{{ imgUrl }}" alt="文档图片 {{ forloop.Counter }}" />
    {% endfor %}
</div>

格式化时间与日期

CreatedTimeUpdatedTime字段返回的是时间戳。为了将其显示为我们熟悉的日期和时间格式,需要配合stampToDate过滤器使用:

<p>发布时间:{{ stampToDate(archive.CreatedTime, "2006年01月02日 15:04") }}</p>
<p>更新时间:{{ stampToDate(archive.UpdatedTime, "2006-01-02") }}</p>

这里的"2006-01-02 15:04"是Golang时间格式化的特殊写法,代表了年、月、日、时、分、秒。

关联分类与标签

文档的分类(Category)信息可以通过archiveDetail直接获取到一个对象,你可以通过.Title.Link访问其属性:

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

如果你需要更多关于分类的详细信息,例如分类的描述、Logo等,则可以配合categoryDetail标签来获取,并传入当前文档的CategoryId

文档的标签(Tag)则需要使用tagList标签来获取。它允许你指定文档ID来获取该文档关联的所有标签:

<div class="article-tags">
    {% tagList tags with itemId=archive.Id limit="10" %}
    {% for tag in tags %}
        <a href="{{ tag.Link }}">{{ tag.Title }}</a>
    {% endfor %}
    {% endtagList %}
</div>

显示自定义字段

安企CMS的强大之处在于其灵活的内容模型,允许你为文档添加任意自定义字段。如果你为文档模型定义了例如“作者”、“来源”、“产品型号”等字段,可以通过archiveDetail直接通过name参数来获取:

<p>作者:{% archiveDetail with name="author" %}</p>
<p>来源:{% archiveDetail with name="source" %}</p>

如果你想动态地遍历并显示所有自定义字段(例如用于产品参数列表),可以使用archiveParams标签:

”`twig

{% archiveParams