如何在模板中截取字符串或HTML内容并添加省略号?

📅 👁️ 72

在运营网站时,我们经常会遇到这样的情况:一篇文章的摘要过长,导致页面布局混乱;产品描述虽然详尽,但在列表页却显得冗余;抑或是一个标题太长,挤占了其他元素的空间。这些看似细微的问题,却可能影响用户体验和页面的整体美观度。幸好,安企CMS(AnQiCMS)为我们提供了非常方便且强大的模板标签,可以轻松解决这些内容截取和添加省略号的需求,让我们的网站内容展示更加得体和专业。

安企CMS的模板引擎内置了几种非常实用的内容截取过滤器,它们可以根据不同的需求(是纯文本还是包含HTML、是按字数还是按单词数截取)来工作。核心的四个过滤器分别是:truncatecharstruncatewordstruncatechars_htmltruncatewords_html

理解安企CMS的裁剪工具

在深入了解具体用法之前,我们首先要明确几个概念:

  1. 纯文本内容 vs. HTML内容:

    • 纯文本内容:指不包含任何HTML标签的文字,例如文章的标题、简短的描述等。
    • HTML内容:指包含HTML标签的文本,例如文章的正文、带有格式的产品详情等。对HTML内容进行截取时,需要特别注意不要破坏原有的标签结构,否则可能导致页面显示异常。
  2. 按字符截取 vs. 按单词截取:

    • 按字符截取:严格按照设定的字符数量进行截取,无论这些字符是中文、英文还是标点符号,都会被计入总数。
    • 按单词截取:主要针对英文内容,它会根据单词的边界进行截取,确保每个被截取的词都是完整的。对于中文内容,由于没有明确的单词概念,它通常会回退到按字符处理。

了解了这些基础,我们就可以选择合适的过滤器来处理不同的内容。

如何使用这些工具

在安企CMS的模板中,使用过滤器(Filters)的语法非常直观:{{ 变量 | 过滤器: 参数 }}。其中,| 符号表示将左侧变量的值传递给右侧的过滤器处理,而 : 符号则用于向过滤器传递参数。

1. 纯文本内容的截取

对于不含HTML标签的文本,我们主要使用 truncatecharstruncatewords

  • truncatechars:按字符截取(包含省略号) 这个过滤器会严格按照您指定的字符数量进行截取,并且在截取后自动添加“…”作为省略号。需要注意的是,这个省略号的三个字符也会被计入您设定的总长度中。

    用法示例: 假设我们有一个文章描述变量 archive.Description,我们想截取前50个字符并添加省略号。

    <p>{{ archive.Description|truncatechars:50 }}</p>
    

    效果: 如果原始描述是“这是一段非常长的文章描述,需要在这里截断显示,以保证页面的整洁性。” 截取后可能显示为:“这是一段非常长的文章描述,需要在这里截断显示,以保…”

  • truncatewords:按单词截取(包含省略号) 这个过滤器会按照单词的数量进行截取,并在末尾添加“…”作为省略号。它会尝试保持单词的完整性。同样,省略号的字符也会计入设定的总长度。

    用法示例: 假设我们有一个英文标题变量 archive.Title,我们想截取前10个单词。

    <h3>{{ archive.Title|truncatewords:10 }}</h3>
    

    效果: 如果原始标题是“AnQiCMS is a powerful and flexible content management system for enterprises.” 截取后可能显示为:“AnQiCMS is a powerful and flexible content management system…”

2. HTML内容的截取(重点)

当我们需要截取包含HTML标签的内容(例如文章正文的一部分)时,直接使用 truncatecharstruncatewords 可能会破坏HTML结构,导致页面显示错乱。安企CMS提供了专门处理HTML内容的过滤器 truncatechars_htmltruncatewords_html,它们能够智能地保留HTML标签的完整性。

特别提醒: 对HTML内容进行截取后,为了让浏览器正确解析并渲染HTML,必须在最后使用 |safe 过滤器。否则,浏览器可能会将HTML标签作为普通文本显示出来。

  • truncatechars_html:按字符截取HTML内容(保留结构,包含省略号) 这个过滤器会按字符数截取HTML内容,同时智能地关闭所有未闭合的HTML标签,以确保输出的HTML结构是有效的。省略号计入总长度。

    用法示例: 假设我们有一个包含HTML的正文内容 archive.Content,我们想截取前200个字符。

    <div class="article-summary">{{ archive.Content|truncatechars_html:200|safe }}</div>
    

    效果: 如果原始内容是 <strong>这是一段重要的内容,包含<em>粗体和斜体</em>文字。非常长...</strong> 截取后可能显示为:<strong>这是一段重要的内容,包含<em>粗体和斜体</em>文字。非常...</strong> (注意:截取过程中,<em>标签被智能闭合)

  • truncatewords_html:按单词截取HTML内容(保留结构,包含省略号)truncatechars_html 类似,但它按单词数截取HTML内容,同样会智能处理HTML标签。省略号计入总长度。

    用法示例: 假设我们想截取 archive.Content 的前40个单词。

    <div class="article-snippet">{{ archive.Content|truncatewords_html:40|safe }}</div>
    

    效果: 如果原始内容是 <ul><li>第一项</li><li>第二项</li><li>第三项,内容很长...</li></ul> 截取后可能显示为:<ul><li>第一项</li><li>第二项</li><li>第三项,内容很长...</li></ul> (截取时会保留 <ul><li> 标签的完整性)

实用场景与**实践

在实际应用中,灵活运用这些裁剪工具能显著提升网站的用户体验和页面整洁

相关文章

安企CMS如何对字符串进行大小写转换或首字母大写?

在网站内容运营中,文字的呈现方式往往影响着用户的阅读体验和品牌形象。无论是为了统一品牌风格、提升标题可读性,还是在特定场景下突出显示文本,对字符串进行大小写转换或首字母大写都是常见的需求。安企CMS(AnQiCMS)凭借其灵活的Django模板引擎语法,为我们提供了几种简洁高效的方法来处理这些字符串格式化任务。 这些操作无需复杂的后端代码修改,只需在模板文件中应用相应的过滤器,即可轻松实现

2025-11-08

如何为文章、分类、单页面设置自定义URL别名?

在内容管理日益重要的今天,一个清晰、友好的URL地址,不仅能帮助搜索引擎更好地理解页面内容,提升网站的SEO表现,还能为用户提供更好的浏览体验,甚至有助于品牌传播。AnQiCMS深知这一点,并提供了强大而灵活的自定义URL别名功能,让您能够轻松为网站上的文章、分类、单页面乃至标签设置个性化的地址。 接下来,我们将一起探索如何在AnQiCMS中精细化管理这些URL别名。 ### 核心前提

2025-11-08

安企CMS如何自定义URL伪静态规则以优化SEO?

在网站运营中,网址结构不仅仅是访问页面的一串字符,它更是网站在搜索引擎中表现的关键因素之一。一个清晰、有意义且对搜索引擎友好的URL(统一资源定位符),能够显著提升网站的SEO效果,帮助内容更容易被发现和理解。安企CMS(AnQiCMS)深知这一点,因此在系统设计之初就融入了强大的伪静态和URL自定义功能,让网站运营者能够灵活地配置网址规则,以满足不同的SEO策略需求。 ###

2025-11-08

如何在模板中显示当前年份或指定格式的时间?

在网站运营中,常常需要让网页内容保持实时更新,或者精确展示特定事件的时间,无论是页脚的版权年份、文章的发布日期,还是产品的更新时间,这些动态的时间信息都能让网站显得更加专业和活跃。AnQiCMS 提供了非常灵活且直观的方式,让您轻松地在模板中显示当前年份或指定格式的时间。 接下来,我们将一起探索两种主要的方法,让您的 AnQiCMS 网站能够灵活展示各种时间信息。 ## 一

2025-11-08

安企CMS如何将多行文本的换行符转换为HTML标签?

在网站内容运营中,我们经常需要在文章、产品描述或页面内容中输入多行文本。然而,直接将带有换行符的文本显示在网页上时,浏览器往往不会按照我们的预期保留这些换行,而是将其渲染为单行连续的文本,这无疑会影响内容的阅读体验和版面整洁。 安企CMS深知这一点,并提供了非常便捷的内置功能,帮助我们轻松地将多行文本中的换行符转换为对应的HTML标签,让内容在前端页面上完美呈现。 ###

2025-11-08

如何在模板中将URL字符串自动转换为可点击的链接?

在网站内容运营中,我们经常会遇到这样的情况:文章、简介或评论中包含了一些URL字符串,它们虽然能被用户看到,但却无法直接点击跳转,这不仅影响了用户体验,也降低了内容的可读性和实用性。作为AnQiCMS的用户,您会发现系统为我们提供了一套优雅且高效的解决方案,能够轻松地将这些普通的URL字符串自动转换为可点击的链接。 AnQiCMS的模板引擎功能强大且灵活,它借鉴了Django模板的简洁语法

2025-11-08

安企CMS如何对数字进行格式化(如浮点数保留小数位)?

在网站运营中,数据的展示方式对用户体验至关重要。无论是商品价格、统计数据还是财务报表,清晰、规范的数字格式不仅能提升网站的专业度,还能帮助用户更直观地理解信息。安企CMS深知这一需求,在模板系统中提供了强大的数字格式化功能,让我们可以轻松控制浮点数的小数位数、整数的显示方式,以及更多定制化的数字呈现。 ### 为什么数字格式化如此重要? 想象一下,一个电商网站上的商品价格显示为“199

2025-11-08

如何去除字符串首尾的空格或指定字符?

在网站内容管理中,字符串的格式化常常是我们进行内容展示和数据处理时需要解决的问题。尤其是在用户输入、数据导入或系统生成的内容中,字符串首尾可能包含多余的空格,或者需要移除特定的字符以符合预期的显示效果或数据规范。AnQiCMS 作为一个高效灵活的内容管理系统,通过其强大的模板引擎和丰富的过滤器,为我们提供了简洁而强大的字符串处理能力,让这类任务在模板层面即可轻松完成。 处理字符串时

2025-11-08