如何在AnQiCMS模板中显示文章标题和内容?

📅 👁️ 74

在安企CMS中,无论是展示单个文章的详细内容,还是在列表页中呈现文章标题和摘要,都得益于其灵活且易于理解的模板标签系统。AnQiCMS采用了类似Django模板引擎的语法,让内容的调用变得直观高效。

模板基础:内容呈现的桥梁

在AnQiCMS中,您会发现所有的模板文件都以.html为后缀,并统一存放在您所选用的模板文件夹(例如 /template/default/)中。模板引擎的核心在于两种标记:

  • 双花括号 {{ 变量名 }}:用于直接输出变量的内容。
  • 单花括号和百分号 {% 标签名 参数 %}:用于实现逻辑控制,如条件判断(if/else)、循环(for)以及调用内置的各种功能标签。

理解了这两种基本标记,我们就可以开始探索如何在AnQiCMS模板中显示文章的标题和内容了。

显示单篇文章的标题与内容 (详情页)

当您访问一篇具体的文章详情页时(例如 article/123.html),AnQiCMS会智能地将当前文章的所有信息作为archive对象提供给模板。这意味着您可以直接通过archive对象访问文章的各种属性。

要显示文章标题,您可以使用以下方式:

<h1>{{ archive.Title }}</h1>

而显示文章的详细内容,通常内容会包含HTML标签(如段落、图片、加粗等),为了确保这些HTML标签能被浏览器正确解析而不是作为纯文本显示,我们需要使用 |safe 过滤器:

<div class="article-content">
    {{ archive.Content|safe }}
</div>

|safe 过滤器会告诉模板引擎,这段内容是安全的HTML代码,可以直接输出而无需转义。如果您的文章内容使用了Markdown编辑器撰写,并且希望在前端渲染成HTML,您也可以明确地使用 render=true 参数:

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

此外,您还可以利用 archiveDetail 标签来更精细地控制内容的显示,或者在非文章详情页面的其他位置调用指定ID的文章内容:

{# 在文章详情页,直接使用即可 #}
<h1>{% archiveDetail with name="Title" %}</h1>
<p>发布时间:{{ stampToDate(archive.CreatedTime, "2006年01月02日") }}</p>
<div class="article-body">
    {% archiveDetail articleFullContent with name="Content" lazy="data-src" %}{{ articleFullContent|safe }}
</div>

{# 在其他页面调用ID为1的文章标题和内容 #}
<h2>{% archiveDetail with name="Title" id="1" %}</h2>
<p>{% archiveDetail with name="Description" id="1" %}</p>

在上面的示例中,stampToDate 标签用于将文章的Unix时间戳格式化为可读的日期,lazy="data-src" 是内容中图片懒加载的参数,让图片加载更优化。

显示文章列表中的标题和摘要 (列表页)

在文章列表页(例如分类列表页或搜索结果页),我们通常会展示多篇文章的简要信息,如标题、摘要和链接,而不是完整的文章内容。AnQiCMS提供了 archiveList 标签来实现这一需求。

archiveList 标签允许您根据分类、模块、推荐属性等多种条件获取文章列表。获取到文章列表后,您需要使用 for 循环来遍历每一篇文章。

以下是一个显示文章列表标题、链接和摘要的常见用法:

<ul class="article-list">
    {% archiveList articles with type="page" moduleId="1" limit="10" %} {# 获取文章模型ID为1,每页10条的列表 #}
        {% for item in articles %}
            <li>
                <h3><a href="{{ item.Link }}">{{ item.Title }}</a></h3>
                <p class="summary">{{ item.Description }}</p>
                <span class="date">发布于:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
            </li>
        {% empty %}
            <li>暂无文章可显示。</li>
        {% endfor %}
    {% endarchiveList %}
</ul>

在这个示例中:

  • archiveList 标签获取了一个名为 articles 的文章集合。type="page" 表示这是一个需要分页的列表,moduleId="1" 指明了文章所属的模型ID,limit="10" 则限制了每页显示的文章数量。
  • {% for item in articles %} 循环遍历了 articles 集合中的每一篇文章,并将当前文章对象命名为 item
  • {{ item.Link }}{{ item.Title }}{{ item.Description }} 分别用于输出文章的链接、标题和自动生成的摘要。
  • {% empty %} 块会在 articles 集合为空时显示,提供了友好的用户提示。
  • stampToDate(item.CreatedTime, "2006-01-02") 同样用于格式化文章的创建时间。

通过这些标签的组合使用,您可以在AnQiCMS模板中灵活且高效地展示各种文章内容,满足不同页面的显示需求。掌握这些基本用法,将让您的网站内容运营事半功倍。

常见问题 (FAQ)

  1. 为什么我在模板中直接输出 {{ archive.Content }},文章内容中的HTML标签没有被解析,而是原样显示了? 这是因为AnQiCMS模板引擎为了安全考虑,默认会对所有输出内容进行HTML实体转义。如果您确认内容是安全的HTML代码,需要使用 |safe 过滤器来指示模板引擎跳过转义,例如 {{ archive.Content|safe }}

  2. 如何在文章列表页只显示文章的简短摘要,而不是完整的文章内容? 在文章列表页,您可以使用 {{ item.Description }} 来显示文章的摘要。Description 字段通常由系统在发布文章时自动从文章内容中提取前N个字符或由编辑手动填写。如果需要自定义摘要的长度,可以使用 truncatecharstruncatewords 等过滤器进行截断处理。

  3. 如果我有一个文章ID,但不在文章详情页,如何调用这篇特定文章的标题和内容? 您可以使用 archiveDetail 标签并传入 id 参数来指定文章ID,例如 {% archiveDetail articleData with name="Title" id="文章ID" %}{{ articleData }} 来获取标题,或者 {% archiveDetail articleContent with name="Content" id="文章ID" %}{{ articleContent|safe }} 来获取并显示内容。

相关文章

安企CMS的`render`过滤器除了Markdown,还能将哪些特定格式的字符串渲染为HTML输出?

在内容管理系统的日常使用中,我们经常需要将存储的纯文本内容以丰富的HTML形式展现给用户。安企CMS(AnQiCMS)提供了强大的模板渲染能力,其中`render`过滤器就是处理这类需求的关键工具之一。很多用户可能已经知道它可以将Markdown格式的文本转换成HTML,那么除了Markdown,这个`render`过滤器还能处理哪些特定格式的字符串呢? 深入探究安企CMS的文档和模板标签说明

2025-11-08

`trim`、`trimLeft`、`trimRight`过滤器在安企CMS中如何灵活删除字符串首尾或特定方向的空格或指定字符?

在网站内容运营过程中,我们经常会遇到字符串处理的需求,比如清理用户输入、统一显示格式、或者优化搜索引擎收录(SEO)等。安企CMS(AnQiCMS)强大的模板引擎提供了多种实用的过滤器,其中`trim`、`trimLeft`和`trimRight`这三个过滤器,正是我们灵活删除字符串首尾或特定方向上多余空格或指定字符的得力助手。 ### `trim` 过滤器:双向修剪

2025-11-08

`replace`过滤器在安企CMS中,如何实现字符串的批量替换,尤其是在进行SEO关键词优化时?

安企CMS(AnQiCMS)凭借其灵活高效的特性,已成为众多内容运营者提升网站表现的得力助手。在网站运营中,尤其是进行SEO关键词优化时,内容的精确性和时效性至关重要。今天,我们就来深入探讨安企CMS中一个看似简单却功能强大的工具——`replace`过滤器,以及如何巧妙运用它来实现字符串的批量替换,从而让你的SEO关键词优化工作事半功倍。 ### 一

2025-11-08

`repeat`过滤器在安企CMS模板中如何用于快速生成重复的占位符或装饰性字符串?

在安企CMS的模板设计中,灵活运用各种过滤器(Filter)是提升模板表现力和开发效率的关键。其中,`repeat`过滤器以其简洁的特性,在快速生成重复性占位符或装饰性字符串方面,提供了一个十分便捷的解决方案。 `repeat`过滤器顾名思义,它的主要功能就是将一个指定的字符串或变量内容,按照我们设定的次数进行重复输出。这听起来可能很简单,但在实际的模板构建过程中,它的实用性却常常超出预期

2025-11-08

AnQiCMS如何自定义文章详情页的URL结构以优化显示?

在网站运营中,一个清晰、有意义的URL结构不仅能让搜索引擎更好地理解和抓取您的内容,还能显著提升用户的浏览体验。AnQiCMS深知这一点,因此提供了灵活而强大的功能,让您可以轻松自定义文章详情页的URL结构。 让我们深入了解AnQiCMS如何帮助您实现这一目标,为您的网站打造更具优势的URL。 ## 为什么自定义URL结构如此重要? 在深入AnQiCMS的功能之前

2025-11-08

如何利用AnQiCMS的内容模型自定义字段并在前端展示?

在网站运营中,我们常常会遇到这样的情况:标准的“文章”或“产品”内容类型无法完全满足我们独特的业务需求。比如,您可能需要发布“房产信息”,它需要“户型”、“面积”、“朝向”等专属字段;或者您在运营一个“招聘平台”,需要“职位名称”、“工作地点”、“薪资范围”和“技能要求”等。此时,AnQiCMS灵活的内容模型和自定义字段功能就显得尤为重要,它能帮助我们打造出完全贴合业务的内容结构

2025-11-08

在AnQiCMS中,如何实现文章列表的分页显示?

在AnQiCMS中,文章列表的分页显示是内容运营中非常常见且重要的功能。它不仅能让访客更方便地浏览大量内容,提升用户体验,对于搜索引擎优化(SEO)也有着不可忽视的作用,可以帮助搜索引擎更好地抓取和索引网站内容。 AnQiCMS作为一个高效、可定制的内容管理系统,在设计之初就充分考虑了这一点,因此实现文章列表的分页功能非常直观和灵活。这主要得益于它强大的模板标签系统

2025-11-08

AnQiCMS如何获取并展示指定分类下的文章列表?

在 AnQiCMS 中获取并展示指定分类下的文章列表,是网站内容运营中非常常见的需求。无论您是想在首页展示特定分类的最新文章,还是在某个独立页面聚合某个专题的所有内容,AnQiCMS 强大的模板标签系统都能帮助您轻松实现。 AnQiCMS 的模板引擎语法与 Django 类似,通过简洁明了的标签和变量,您可以直接在 HTML 模板中调用后端数据。本文将引导您如何利用 `archiveList`

2025-11-08