如何在安企CMS模板中显示特定文档的详细信息,包括标题、内容和缩略图?

在安企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中通常有两个主要属性可以获取:LogoThumbLogo 通常指文档的主图或大图,而 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 标签通过 idtoken 指定的文档在系统中不存在,那么 specificDoc 变量将是空的。在模板中,您可以利用这一点进行判断,例如使用 {% if specificDoc %} 来包裹显示内容的区域。这样,如果文档不存在,该区域将不会被渲染,避免页面出现错误或空白内容。

2. 除了 id,我还能如何指定要显示的文档? 除了使用文档的ID(例如 id="15"),您还可以使用文档的URL别名(token)来指定文档。例如,如果某个文档的URL别名是 about-us,您可以这样使用:{% archiveDetail specificDoc with token="about-us" %}。选择哪种方式取决于您在开发时哪种标识更方便获取。

3. specificDoc.LogospecificDoc.Thumb 有什么区别?我应该用哪个? specificDoc.Logo 通常指的是文档在后台设置的“文档图片”中的主图或原始图,它的尺寸可能较大。而 specificDoc.Thumb 则是系统根据后台“内容设置”中定义的缩略图尺寸,自动生成并裁剪后的缩略图。在需要展示小尺寸图片(如列表项、侧边栏推荐)时,使用 Thumb 可以减少图片加载时间,优化用户体验;在展示文档详情页中的大图时,则可能更适合使用 Logo。建议根据实际显示区域的大小和性能要求来选择。