在安企CMS中,有时我们可能需要在网站的某个特定位置,比如首页的某个推荐区,或者侧边栏的“精选内容”模块,展示一篇预设好的文档的详细信息,包括它的标题、具体内容和醒目的缩略图。要实现这一目标,安企CMS提供了非常灵活且直观的方式。
安企CMS的模板系统采用了类似Django模板引擎的语法,这意味着您可以使用双花括号 {{ 变量 }} 来输出数据,以及单花括号和百分号 {% 标签 %} 来执行逻辑控制和调用特定功能。这种设计让内容操作变得非常容易上手。
核心工具:archiveDetail 标签
要在模板中显示特定文档的详细信息,您需要用到安企CMS提供的一个名为 archiveDetail 的强大模板标签。这个标签专门用于获取并展示单一文档的详细数据。
使用 archiveDetail 标签时,最关键的是要告诉系统您想获取哪一篇文档。这可以通过两种主要方式实现:通过文档的ID或者通过文档的URL别名(token)。在大多数需要精确指定文档的场景中,使用文档ID是最直接和稳健的方法。
假设您想在模板中显示ID为15的文档的标题、内容和缩略图。您可以这样来开始:
{% archiveDetail specificDoc with id="15" %}
{# 在这里放置显示文档详细信息的代码 #}
{% endarchiveDetail %}
在这段代码中,specificDoc 是一个您自己定义的变量名,它会承载ID为15的文档的所有数据。有了这个变量,接下来就可以轻松访问文档的各个属性了。
显示文档标题
要获取指定文档的标题,您只需访问 specificDoc 变量的 Title 属性。在安企CMS模板中,变量的属性通常采用驼峰命名法。
{% archiveDetail specificDoc with id="15" %}
<h2 class="document-title">{{ specificDoc.Title }}</h2>
{% endarchiveDetail %}
这段代码会渲染出ID为15的文档的标题,并用 h2 标签包裹起来。
展示文档内容
文档的内容通常包含HTML标签,例如段落、图片、链接等。为了让这些HTML内容能够正确解析并显示在页面上,而不是作为纯文本被浏览器转义(显示为源代码),您需要使用 |safe 过滤器。
{% archiveDetail specificDoc with id="15" %}
<h2 class="document-title">{{ specificDoc.Title }}</h2>
<div class="document-content">
{{ specificDoc.Content|safe }}
</div>
{% endarchiveDetail %}
加上 |safe 过滤器后,specificDoc.Content 中的HTML代码就会被浏览器正常渲染了。如果后台启用了Markdown编辑器,Content 字段也会自动渲染为HTML,|safe 过滤器在这里同样适用。如果您有特殊需求不希望Markdown内容被渲染,可以考虑在 archiveDetail 标签中添加 render=false 参数,但通常情况下,默认渲染是符合期望的。
呈现文档缩略图
文档的缩略图在安企CMS中通常有两个主要属性可以获取:Logo 和 Thumb。Logo 通常指文档的主图或大图,而 Thumb 则是经过系统处理的缩略图,尺寸可能更小,更适合列表或小块区域展示。您可以根据设计需求选择其中一个。
{% archiveDetail specificDoc with id="15" %}
<h2 class="document-title">{{ specificDoc.Title }}</h2>
{% if specificDoc.Thumb %} {# 推荐先判断缩略图是否存在 #}
<div class="document-thumbnail">
<img src="{{ specificDoc.Thumb }}" alt="{{ specificDoc.Title }}" />
</div>
{% endif %}
<div class="document-content">
{{ specificDoc.Content|safe }}
</div>
{% endarchiveDetail %}
在上面的代码中,我们增加了一个 {% if specificDoc.Thumb %} 判断,这是一个良好的实践,可以避免在没有缩略图的情况下渲染出空的 img 标签,从而保持页面结构的整洁。
结合时间格式化与自定义字段
除了标题、内容和缩略图,您可能还希望显示文档的发布时间,或者一些自定义的模型字段。安企CMS同样提供了便捷的方式。例如,格式化时间戳可以使用 stampToDate 函数:
{% archiveDetail specificDoc with id="15" %}
<h2 class="document-title">{{ specificDoc.Title }}</h2>
<p class="publish-date">发布时间:{{ stampToDate(specificDoc.CreatedTime, "2006年01月02日") }}</p>
{% if specificDoc.Thumb %}
<div class="document-thumbnail">
<img src="{{ specificDoc.Thumb }}" alt="{{ specificDoc.Title }}" />
</div>
{% endif %}
<div class="document-content">
{{ specificDoc.Content|safe }}
</div>
{# 如果您有自定义字段,例如“Author”,可以直接访问 #}
{% if specificDoc.Author %}
<p class="document-author">作者:{{ specificDoc.Author }}</p>
{% endif %}
{% endarchiveDetail %}
通过这些简单的标签和变量访问方式,您就能在安企CMS的任何模板中,灵活地获取并展示特定文档的详细信息,无论是用在首页的推荐位,还是特定的内容模块,都能够轻松实现。
常见问题 (FAQ)
1. 如果指定的文档ID不存在,页面会显示什么?
如果 archiveDetail 标签通过 id 或 token 指定的文档在系统中不存在,那么 specificDoc 变量将是空的。在模板中,您可以利用这一点进行判断,例如使用 {% if specificDoc %} 来包裹显示内容的区域。这样,如果文档不存在,该区域将不会被渲染,避免页面出现错误或空白内容。
2. 除了 id,我还能如何指定要显示的文档?
除了使用文档的ID(例如 id="15"),您还可以使用文档的URL别名(token)来指定文档。例如,如果某个文档的URL别名是 about-us,您可以这样使用:{% archiveDetail specificDoc with token="about-us" %}。选择哪种方式取决于您在开发时哪种标识更方便获取。
3. specificDoc.Logo 和 specificDoc.Thumb 有什么区别?我应该用哪个?
specificDoc.Logo 通常指的是文档在后台设置的“文档图片”中的主图或原始图,它的尺寸可能较大。而 specificDoc.Thumb 则是系统根据后台“内容设置”中定义的缩略图尺寸,自动生成并裁剪后的缩略图。在需要展示小尺寸图片(如列表项、侧边栏推荐)时,使用 Thumb 可以减少图片加载时间,优化用户体验;在展示文档详情页中的大图时,则可能更适合使用 Logo。建议根据实际显示区域的大小和性能要求来选择。