如何在文章详情页显示完整的文章内容,包括懒加载图片?

📅 👁️ 66

安企CMS:如何在文章详情页优雅地展示完整内容与懒加载图片

在网站内容运营中,文章详情页是用户获取信息、深入了解品牌和产品的重要触点。一个设计精良、加载迅速、内容展示完整的文章详情页,不仅能极大提升用户体验,还能有效助力SEO优化。对于使用安企CMS的用户而言,充分利用其强大的模板标签系统,可以轻松实现文章内容的完整呈现,并结合现代网页技术实现图片的懒加载,让您的网站既美观又高效。

核心:理解文章详情页面的构成

在安企CMS中,文章的完整内容,包括文字、图片、视频等多媒体元素,都存储在您发布文章时所编辑的“文档内容”字段中。当用户访问文章详情页时,我们需要通过模板标签将这些存储在数据库中的内容提取出来,并在浏览器中进行渲染。同时,为了优化页面加载速度,尤其是图片较多的文章,引入懒加载机制显得尤为重要。

第一步:准备你的文章详情模板

安企CMS的模板遵循清晰的目录结构和命名约定。通常,文章详情页的模板文件会位于当前模板主题下的 {模型table}/detail.html,例如 archive/detail.htmlproduct/detail.html。如果您有特殊的分类或文档需要独特的布局,也可以在后台指定使用自定义模板,如 download.html

首先,确保您的 detail.html 文件继承了基础模板,以便复用网站的通用头部、底部和样式:

{% extends 'base.html' %}

{% block content %}
    {# 在这里编写文章详情页的具体内容 #}
{% endblock %}

第二步:调用文章完整内容的关键标签——archiveDetail

安企CMS提供了 archiveDetail 标签来获取文章(文档)的详细信息。要显示文章的完整内容,您需要使用 name="Content" 参数。

{% archiveDetail articleContent with name="Content" %}
    {{ articleContent|safe }}
{% endarchiveDetail %}

这里有几个关键点需要注意:

  1. name="Content":这是指定获取文章主体内容的参数。
  2. archiveContent:这是一个自定义的变量名,用于存储获取到的文章内容。您可以根据喜好自定义。
  3. |safe 过滤器这一步至关重要。文章内容通常包含HTML标签(如 <p>, <img>, <strong> 等),如果不加 |safe 过滤器,安企CMS出于安全考虑会默认对所有HTML标签进行转义,导致页面上显示的是一堆代码而不是排版好的内容。|safe 告诉模板引擎,这段内容是安全的HTML,可以直接渲染。

处理图片懒加载

为了提升页面加载速度,尤其是图片较多的文章,懒加载(Lazy Load)是一个非常有效的优化手段。安企CMS的 archiveDetail 标签内置了对图片懒加载属性的转换支持。

您可以通过添加 lazy="data-src" 参数,让系统自动将文章内容中的 <img> 标签的 src 属性转换为 data-src 属性。

{% archiveDetail articleContent with name="Content" lazy="data-src" %}
    {{ articleContent|safe }}
{% endarchiveDetail %}

当您这样设置后,安企CMS会将文章内容中的所有图片标签(例如 <img src="https://www.anqicms.com/uploads/image.jpg" />)自动转换为 <img data-src="https://www.anqicms.com/uploads/image.jpg" />

请注意lazy="data-src" 仅仅是修改了图片的属性名称。要真正实现懒加载,您还需要在前端引入相应的JavaScript懒加载库,并根据该库的要求初始化,让它识别 data-src(或其他您指定的属性)并进行按需加载。目前市面上多数懒加载库都支持 data-src 属性。

Markdown 内容的渲染

如果您的文章内容使用了Markdown格式编写,并且在后台“全局设置”->“内容设置”中启用了Markdown编辑器,那么在模板中调用内容时,您可能需要额外处理以确保其正确渲染为HTML。

archiveDetail 标签提供了 render=true 参数来自动将Markdown格式的内容转换为HTML:

{% archiveDetail articleContent with name="Content" lazy="data-src" render=true %}
    {{ articleContent|safe }}
{% endarchiveDetail %}

这样,您的Markdown内容就能被正确解析并渲染在页面上。同时,您还需要在前端引入Markdown渲染所需的CSS样式和可能的JS库,如 help-markdown.md 中提及的 github-markdown-css

第三步:丰富文章详情页的其他信息

一个完整的文章详情页除了内容本身,还需要展示标题、发布时间、所属分类、标签、阅读量等辅助信息,这些同样可以通过 archiveDetail 标签或其它相关标签获取。

  • 文章标题{% archiveDetail with name="Title" %}
  • 发布时间{{stampToDate(archive.CreatedTime, "2006-01-02")}}
  • 所属分类{% categoryDetail with name='Title' %}
  • 标签:使用 tagList 循环标签来获取文章关联的所有标签。
  • 浏览量{% archiveDetail with name="Views" %}
  • 自定义参数:如果您的内容模型定义了额外的字段,可以使用 archiveParams 标签循环展示。

整合与优化:一个完整的详情页片段

将上述元素整合起来,一个具备完整内容展示和懒加载功能的文章详情页核心代码大致如下:

”`twig {% extends ‘base.html’ %}

{% block content %}

<article class="article-detail-container">
    {# 文章标题 #}
    <h1 class="article-title">{% archiveDetail with name="Title" %}</h1>

    {# 文章元信息:分类、时间、浏览量 #}
    <div class="article-meta">
        <span>分类:<a href="{% categoryDetail with name='Link' %}">{% categoryDetail with name='Title' %}</a></span>
        <span>发布于:{{stampToDate(archive.CreatedTime, "2006-01-02")}}</span>
        <span>阅读量:{% archiveDetail with name="Views" %}</span>
    </div>

    {# 文章标签 #}
    <div class="article-tags">
        {% tagList tags with itemId=archive.Id %}
            {% for item in tags %}
                <a href="{{item.Link}}" class="tag-item">{{item.Title}}</a>
            {% endfor %}
        {% endtagList %}
    </div>

    {# 文章主体内容:包含懒加载和Markdown渲染 #}
    <div class="article-content markdown-body"> {# 假设您已引入github-markdown-css,并使用markdown-body类 #}
        {% archiveDetail articleContent with name="Content" lazy="data-src" render=true %}
            {{ articleContent|safe }}
        {% endarchiveDetail %}
    </div>

    {# 更多自定义参数(如果需要) #}
    <div class="article-custom-params">
        {% archiveParams params %}
            {% for item in params %}
                <p><strong>{{item.Name}}:</strong>{{item.Value}}</p>
            {% endfor %}
        {% endarchiveParams %}
    </div>

    {# 上一篇/下一篇文章导航 #}
    <div class="article-nav">
        {% prevArchive prev %}
            {% if prev %}
                <a href="{{prev.Link}}" class="prev-article">上一篇:{{prev.Title}}</a>
            {% else %}
                <span class="prev-article-none">没有了</span>
            {% endif %}
        {% endprevArchive %}
        {% nextArchive next %}
            {% if next %}
                <a href="{{next.Link}}"

相关文章

如何根据不同条件(如分类、推荐属性)显示文档列表?

在安企CMS中,灵活地展示网站内容是提升用户体验和满足运营需求的关键。无论是根据文章所属的分类,还是内容的推荐属性,系统都提供了强大且易于使用的模板标签,让您能够轻松地定制文档列表的显示方式。 ### 核心利器:`archiveList` 文档列表标签 在安企CMS中,用来控制文档列表展示的核心工具是`archiveList`标签。它允许您根据多种条件来筛选、排序和限制显示的文档数量

2025-11-08

如何获取并显示特定单页面的全部内容及关联图片?

在安企CMS中,单页面是网站内容构成的重要部分,比如“关于我们”、“联系方式”等。有效地获取并展示这些单页面的全部内容以及关联图片,对于网站的信息传达和视觉表现至关重要。安企CMS提供了直观的后台管理和灵活的模板标签,让这一过程变得非常便捷。 ### 在后台轻松设置单页面内容和图片 首先,我们需要在安企CMS的后台管理系统中创建和编辑单页面内容。这通常在“页面资源”下的“页面管理”模块进行

2025-11-08

如何在网站上展示所有或部分单页面列表?

在网站运营中,我们经常需要展示一些独立的、内容相对固定不变的页面,例如“关于我们”、“联系方式”或者某些政策说明等。在安企CMS中,这些被称为“单页面”。有效管理和展示这些单页面,不仅能让网站结构更清晰,也能提升用户体验。 接下来,我们将一起探讨如何在网站上灵活地展示所有或部分单页面列表。 ### **一、理解单页面的创建与管理(后台操作)** 在开始前端展示之前

2025-11-08

如何获取并显示特定分类的详细信息(如描述、Banner图)?

在安企CMS中,灵活地获取并展示分类的详细信息,例如分类的描述、Banner图或缩略图,对于构建内容丰富、视觉吸引力强的网站至关重要。无论是需要在分类列表页展示简介,还是在特定页面引用某个分类的宣传图,安企CMS都提供了直观且强大的模板标签来帮助您实现这些需求。 要获取分类的详细信息,我们主要依赖于 `categoryDetail` 这个模板标签。这个标签专门设计用于提取单个分类的各项数据

2025-11-08

如何在AnQiCMS中显示带有Markdown格式的数学公式和流程图?

在内容运营中,有时我们需要展示复杂的数学公式或清晰的流程图,尤其是在技术文章、数据报告或教育内容中。AnQiCMS 凭借其强大的 Markdown 编辑器,为我们提供了实现这一需求的便利。通过简单的配置和引入必要的库文件,您就能让这些专业内容在网站前端完美呈现。 ### 启用 AnQiCMS 的 Markdown 编辑器 首先,要让 AnQiCMS 识别并处理 Markdown 格式的内容

2025-11-08

如何在文档详情页显示上一篇和下一篇文章的链接?

在浏览网站内容时,用户往往希望能够方便地在相关文章之间跳转。例如,阅读完一篇新闻或教程后,能迅速点击前往“上一篇”或“下一篇”文章,以保持阅读的连贯性。这不仅能提高用户体验,减少跳出率,对网站的内部链接结构和搜索引擎优化(SEO)也有积极作用。 安企CMS(AnQiCMS)作为一款高效的内容管理系统,提供了非常简洁直观的方式来实现这一功能。我们无需复杂的后端编程

2025-11-08

如何在文章详情页下方显示相关文章列表?

在网站运营中,文章详情页下方的“相关文章”列表是一个提升用户体验、增加页面浏览量(PV)和延长用户站内停留时间的重要功能。它能引导用户发现更多感兴趣的内容,从而增强网站的整体粘性,对搜索引擎优化(SEO)也有积极作用。在安企CMS中实现这一功能,得益于其灵活的模板系统和强大的标签功能,整个过程既直观又高效。 ### 一、理解“相关文章”的调用机制 安企CMS的模板标签是实现各种功能的核心

2025-11-08

如何在文章或产品详情页展示其自定义参数?

在网站运营中,为文章或产品详情页增添个性化信息,是提升内容专业度和用户体验的关键。安企CMS(AnQiCMS)深知这一需求,提供了强大的自定义参数功能,让我们可以根据不同内容类型,灵活地添加和展示所需信息。 想象一下,你发布了一篇技术文章,除了标题、正文,你还想展示“作者”、“发布日期”、“技术栈”等独有属性;又或者,你正在销售一款产品,除了常规的名称、价格、描述,你还希望突出“颜色”

2025-11-08