在安企CMS的强大功能支持下,我们能够灵活地构建各类网站内容。其中,显示单个文档的详细信息是网站内容展示的核心需求之一。安企CMS为此提供了专门的模板标签——archiveDetail,它能帮助我们在模板中轻松获取并呈现文档的所有相关数据。
使用archiveDetail标签,即使是对模板语言不甚熟悉的用户也能快速上手,将技术信息转化为网站上自然流畅的阅读体验。
理解archiveDetail标签的作用
archiveDetail标签的主要职责,就是从数据库中精确地抓取某一篇文档的所有细节数据。这些数据可以是文档的标题、内容、发布时间、分类信息,甚至是你为该文档自定义的额外字段。它通常用在文章详情页、产品详情页等需要展示单一内容完整信息的场景。
这个标签的基本使用方式非常直观,通常以这样的结构出现:
{% archiveDetail 变量名称 with name="字段名称" id="1" %}
其中:
变量名称是一个可选的参数。如果你设置了它,获取到的数据会被赋值给这个变量,方便你在后续的模板代码中进行更复杂的处理。如果不设置,标签会直接输出字段的值。name="字段名称"用于指定你想获取的文档的具体哪个字段信息,比如"Title"获取标题,"Content"获取内容。id="1"是用来指定你想获取哪一篇文档的数据。通常情况下,当你已经在文档详情页(比如网址是/article/100.html)时,系统会自动识别当前文档的ID,你无须手动设置id或token参数,archiveDetail会默认获取当前页面的文档信息,非常便捷。但如果你想在当前页面显示 另一篇 特定文档的信息,那么就可以通过id或token来精确指定。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>
处理文档中的图片
文档通常会有封面图、缩略图,甚至是一组图片。
Logo和Thumb分别用于获取文档的封面首图和缩略图:
<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>
格式化时间与日期
CreatedTime和UpdatedTime字段返回的是时间戳。为了将其显示为我们熟悉的日期和时间格式,需要配合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