如何在 AnQiCMS 模板中获取当前文档的详细信息(如标题、内容、缩略图)?

📅 👁️ 61

作为一名资深的AnQiCMS网站运营人员,我深知在模板中灵活获取和展示内容的重要性。AnQiCMS强大的模板引擎使得内容的创作、编辑和发布变得高效而便捷。今天,我们将深入探讨如何在AnQiCMS的模板中获取当前文档的详细信息,例如标题、内容和缩略图,从而帮助您更好地定制网站前端展示。

理解AnQiCMS模板中的文档数据

AnQiCMS的模板系统设计得非常直观,尤其是在处理文档(archive)这类核心内容时。当您访问一个文档详情页时,系统会自动将当前文档的所有可用信息加载到模板的上下文中。这意味着您可以使用特定的标签和变量,轻松地访问这些数据。核心在于archiveDetail标签,它是获取单个文档详细信息的主要工具。

使用archiveDetail标签获取文档信息

archiveDetail标签是AnQiCMS提供的一个强大且灵活的标签,用于获取指定或当前文档的各项字段值。它的基本用法是{% archiveDetail 变量名称 with name="字段名称" %}。您也可以选择不定义变量名称,直接让标签输出结果。

获取文档标题

文档标题是任何内容的核心标识。在AnQiCMS模板中获取当前文档的标题非常简单。您可以使用archiveDetail标签并指定name="Title"来获取它。

例如,在您的文档详情页模板中,可以直接这样放置代码:

<h1>{% archiveDetail with name="Title" %}</h1>

如果希望将标题赋值给一个变量以便后续处理,可以这样操作:

{% archiveDetail currentTitle with name="Title" %}
<h1>{{ currentTitle }}</h1>

此外,如果您需要获取指定ID文档的标题,可以在标签中添加id参数:

<p>ID为1的文档标题是:{% archiveDetail with name="Title" id="1" %}</p>

获取文档内容

文档内容是页面的主体信息,可能包含丰富的文本、图片和嵌入媒体。archiveDetail标签同样能够轻松地提取这部分数据,通过指定name="Content"来实现。由于文档内容通常包含HTML标签,为了确保这些标签能被浏览器正确解析并显示样式,我们通常会配合|safe过滤器使用。

以下是获取文档内容的基本方式:

<div class="article-content">
    {% archiveDetail with name="Content" %}
</div>

请注意,为了安全起见,AnQiCMS模板引擎默认会对所有输出的变量进行HTML转义,以防止跨站脚本攻击(XSS)。这意味着如果您的文档内容包含HTML标签,它们将以纯文本形式显示。如果您确定内容是安全的,并且需要浏览器解析其中的HTML,务必使用|safe过滤器:

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

AnQiCMS还支持Markdown编辑器。如果文档内容是用Markdown编写的,并且您希望在前端自动渲染成HTML,可以在archiveDetail标签中添加render=true参数。同时,如果您的网站使用了图片懒加载功能,并需要将图片src属性替换为data-src或类似属性,可以使用lazy="data-src"参数,标签会自动处理。

{# 假设文档内容为Markdown,并希望自动渲染成HTML #}
<div class="article-content markdown-body">
    {% archiveDetail renderedContent with name="Content" render=true %}
    {{ renderedContent|safe }}
</div>

{# 同时启用Markdown渲染和图片懒加载 #}
<div class="article-content markdown-body">
    {% archiveDetail lazyRenderedContent with name="Content" render=true lazy="data-src" %}
    {{ lazyRenderedContent|safe }}
</div>

获取文档缩略图

文档缩略图在列表页、相关推荐或文章详情页顶部横幅等场景中都扮演着重要角色。AnQiCMS为文档提供了几种不同类型的图片字段,最常用的是Logo(通常指封面首图或大图)和Thumb(通常指经过裁剪或处理的缩略图)。您可以通过指定对应的name参数来获取它们。

获取文档封面首图(Logo):

<div class="article-image">
    <img src="{% archiveDetail with name="Logo" %}" alt="{% archiveDetail with name="Title" %}" />
</div>

获取文档封面缩略图(Thumb):

<div class="article-thumbnail">
    <img src="{% archiveDetail with name="Thumb" %}" alt="{% archiveDetail with name="Title" %}" />
</div>

在实际应用中,您可能会将这些图片用于响应式设计,或者根据页面的不同区域选择性地展示。

获取其他常用文档信息

除了标题、内容和缩略图,文档还包含许多其他有用的信息,您同样可以使用archiveDetail标签来获取它们。

  • 文档ID{% archiveDetail with name="Id" %}
  • 文档链接{% archiveDetail with name="Link" %}
  • 文档描述{% archiveDetail with name="Description" %}
  • 文档分类ID{% archiveDetail with name="CategoryId" %}
  • 文档浏览量{% archiveDetail with name="Views" %}
  • 文档创建时间{% archiveDetail with name="CreatedTime" %}。由于CreatedTime返回的是时间戳,您需要使用stampToDate过滤器将其格式化为可读的日期和时间,例如{{ stampToDate(archive.CreatedTime, "2006-01-02 15:04") }}
  • 文档更新时间{% archiveDetail with name="UpdatedTime" %},同样需要使用stampToDate进行格式化。

AnQiCMS还支持自定义内容模型字段。如果您在后台为特定模型添加了自定义字段,例如authorproduct_sku,您也可以直接通过archiveDetail标签来获取它们的值:

<p>作者:{% archiveDetail with name="author" %}</p>
<p>产品SKU:{% archiveDetail with name="product_sku" %}</p>

甚至,如果您需要循环显示所有自定义字段,可以使用archiveParams标签:

{% archiveParams params %}
<div class="custom-fields">
    {% for item in params %}
    <p><strong>{{ item.Name }}:</strong> {{ item.Value }}</p>
    {% endfor %}
</div>
{% endarchiveParams %}

实践案例:构建一个完整的文档详情页片段

综合上述内容,我们可以构建一个更完整的文档详情页片段,来展示如何有效利用这些标签获取和展示当前文档的详细信息:

<article class="document-detail">
    {# 获取文档标题 #}
    <h1>{% archiveDetail with name="Title" %}</h1>

    <div class="article-meta">
        {# 获取分类信息 #}
        {% archiveDetail articleCategory with name="Category" %}
        <span class="category">分类:<a href="{{ articleCategory.Link }}">{{ articleCategory.Title }}</a></span>
        
        {# 获取创建时间并格式化 #}
        {% archiveDetail createdTime with name="CreatedTime" %}
        <span class="publish-date">发布时间:{{ stampToDate(createdTime, "2006年01月02日 15:04") }}</span>
        
        {# 获取浏览量 #}
        <span class="views">浏览量:{% archiveDetail with name="Views" %}</span>
    </div>

    {# 获取文档封面大图,并假设alt文本为标题 #}
    {% archiveDetail coverLogo with name="Logo" %}
    {% if coverLogo %}
    <div class="article-cover">
        <img src="{{ coverLogo }}" alt="{% archiveDetail with name="Title" %}" />
    </div>
    {% endif %}

    {# 获取文档内容,启用Markdown渲染和图片懒加载 #}
    <div class="article-content markdown-body">
        {% archiveDetail articleContent with name="Content" render=true lazy="data-src" %}
        {{ articleContent|safe }}
    </div>

    {# 获取文档描述 #}
    {% archiveDetail description with name="Description" %}
    {% if description %}
    <div class="article-description">
        <p><strong>简介:</strong>{{ description }}</p>
    </div>
    {% endif %}

    {# 获取并显示自定义字段(假设有一个名为"来源"的字段) #}
    {% archiveDetail source with name="来源" %}
    {% if source %}
    <p class="article-source">来源:{{ source }}</p>
    {% endif %}

    {# 获取并显示文档标签 #}
    <div class="article-tags">
        <strong>标签:</strong>
        {% tagList tags %}
        {% for tagItem in tags %}
        <a href="{{ tagItem.Link }}">{{ tagItem.Title }}</a>{% if not forloop.Last %}, {% endif %}
        {% endfor %}
        {% endtagList %}
    </div>
</article>

总结

在AnQiCMS模板中获取当前文档的详细信息是一项基础且关键的操作。通过熟练运用archiveDetail标签,您可以精确地提取文档的标题、内容、缩略图以及各种自定义字段。结合|safe过滤器、render参数进行Markdown内容处理,以及stampToDate函数进行时间格式化,您将能够打造出功能丰富、展示优雅的网站页面。记住,在处理用户生成内容时,始终对使用|safe过滤器保持警惕,确保内容的安全性。


常见问题解答 (FAQ)

为什么我在模板中使用了archiveDetail标签,但没有显示任何内容?

可能的原因有几个。首先,请确保您当前访问的是一个文档详情页,因为archiveDetail标签默认会尝试获取当前页面的文档信息。如果您在非文档详情页(如列表页或首页)使用此标签而未指定idtoken参数,它将无法找到对应的文档。其次,检查您name参数中指定的字段名称是否正确,包括大小写是否匹配,例如Title而不是title。最后,如果您尝试获取的是自定义字段,请确认该字段已在后台内容模型中正确配置,并且当前文档确实填写了该字段的值。

在显示文档内容时,我使用了|safe过滤器,但仍担心存在安全风险,有什么建议吗?

|safe过滤器用于指示模板引擎将输出内容视为安全的HTML,不再进行转义。虽然它在显示富文本内容时必不可少,但确实引入了潜在的XSS风险,尤其是在内容由不受信任的用户输入时。建议您在后台对用户提交的内容进行严格的清洗和过滤,移除恶意脚本或不安全的HTML标签,以最大限度地降低风险。如果可能,对于用户提交的纯文本或Markdown内容,尽量避免直接使用|safe,而是依赖系统自带的Markdown渲染功能(render=true),这通常会更安全。

我如何获取当前文档所属分类的详细信息(例如分类名称、分类链接)?

当前文档所属分类的ID可以通过{% archiveDetail with name="CategoryId" %}获取。获得分类ID后,您可以进一步使用categoryDetail标签来获取该分类的详细信息。例如:

{% archiveDetail currentCategoryId with name="CategoryId" %}
{% categoryDetail categoryInfo with id=currentCategoryId %}
<p>分类名称:<a href="{{ categoryInfo.Link }}">{{ categoryInfo.Title }}</a></p>

或者,archiveDetail标签本身也提供了Category字段,可以直接获取分类对象,更加简洁:

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

相关文章

如何在 AnQiCMS 模板中按分类、模型、推荐属性等条件筛选并显示文档列表?

作为一名资深的AnQiCMS网站运营人员,我深知高效内容管理和灵活展示的重要性。在AnQiCMS中,文档列表的筛选与显示是构建动态网站不可或缺的功能。无论是展示特定分类下的最新文章,还是根据内容模型区分产品和新闻,亦或是突出推荐内容,AnQiCMS强大的模板标签都能帮助我们轻松实现这些需求。 本篇文章将详细阐述如何在AnQiCMS模板中,利用`archiveList`标签及其丰富的参数,按分类

2025-11-06

如何在 AnQiCMS 模板中显示指定单页面的详细内容?

在AnQiCMS的网站运营中,单页面(Page)功能是一个非常实用的模块,它允许我们创建和管理独立于文章或产品等动态内容之外的静态页面,例如“关于我们”、“联系方式”或“服务介绍”等。这些页面通常包含相对固定且重要的信息,需要以清晰、直接的方式呈现给访问者。作为一名AnQiCMS的资深运营人员,我深知如何有效地利用模板机制来精准控制这些单页面的显示,以满足多样化的设计和内容需求。 ###

2025-11-06

如何在 AnQiCMS 模板中列出所有或指定类型的单页面?

在AnQiCMS中管理和展示单页面是网站运营的常见需求,尤其对于“关于我们”、“联系方式”、“服务条款”这类静态内容。作为一名经验丰富的AnQiCMS运营人员,我深知高效利用模板标签,能够极大地提升内容发布的灵活性和网站的维护效率。本文将详细阐述如何在AnQiCMS模板中列出所有或指定类型的单页面。 ### 理解AnQiCMS中的单页面机制 在AnQiCMS中,单页面(Single

2025-11-06

如何在 AnQiCMS 模板中获取并显示指定分类的详细信息?

作为一名资深的安企CMS网站运营人员,我深知在模板中高效、精确地展示内容对于网站的吸引力和SEO表现至关重要。分类信息是网站架构的核心,能够准确地获取并呈现在前端页面,不仅能提升用户体验,也为搜索引擎抓取提供了清晰的结构。今天,我们就来详细探讨如何在安企CMS模板中获取并显示指定分类的详细信息。 ### 理解安企CMS模板与内容展示基础 安企CMS采用类似于Django模板引擎的语法

2025-11-06

如何在 AnQiCMS 模板中显示当前文档的上一篇和下一篇文档链接?

作为一名资深的安企CMS网站运营人员,我深知网站内容导航对于用户体验和搜索引擎优化的重要性。清晰、便捷的导航不仅能引导用户深入浏览网站内容,有效延长停留时间,更能构建完善的内部链接结构,提升搜索引擎的抓取效率和内容权重。今天,我们将详细探讨如何在 AnQiCMS 模板中灵活地显示当前文档的上一篇和下一篇文档链接。 ### 模板基础回顾 在 AnQiCMS 中,模板引擎采用类似 Django

2025-11-06

如何在 AnQiCMS 模板中获取并展示与当前文档相关的文档列表?

作为一名深谙安企CMS运作之道的网站运营人员,我深知内容策略对用户体验和网站成长的核心价值。高质量的内容不仅需要精心创作,更需要智能地组织和呈现,确保读者能轻松发现更多他们感兴趣的信息。在文章详情页中,如何有效地展示与当前文档相关的列表,是提升用户黏性和页面浏览深度的重要一环。 现在,让我们深入探讨如何在 AnQiCMS 模板中实现这一功能,通过动态地展示相关内容,为您的读者提供无缝的阅读体验

2025-11-06

如何在 AnQiCMS 模板中调用自定义的文档额外参数(如文章作者、产品价格)?

在 AnQiCMS 的日常运营中,我们经常需要为不同类型的内容(例如文章、产品)添加一些标准字段之外的个性化信息,比如文章的特定作者、产品的详细价格、生产日期等。AnQiCMS 强大的内容模型功能允许我们灵活地定义这些自定义字段,并在模板中便捷地进行调用和展示,从而满足多样化的内容展示需求。 要实现这一目标,我们需要经历两个主要步骤:首先是在 AnQiCMS 后台定义这些自定义的额外参数

2025-11-06

如何在 AnQiCMS 模板中制作基于文档参数的多条件筛选界面?

作为一名资深的安企CMS网站运营人员,我深知构建一个高效、用户友好的内容筛选界面对于提升用户体验和内容可发现性的重要性。在AnQiCMS中,借助其灵活的内容模型和强大的模板标签系统,我们可以轻松地制作出基于文档参数的多条件筛选界面。这不仅能帮助读者快速找到他们所需的信息,也能有效提升网站内容的组织性和SEO表现。 ### 制作多条件筛选界面的基础:理解文档参数 在AnQiCMS中

2025-11-06