在网站内容运营中,我们经常会遇到这样的情况:从数据库调取出来的模板变量内容,可能包含了一些不必要的字符、多余的空格,或者格式不尽如人意。这些细微之处如果不能妥善处理,可能会影响页面的美观、用户体验,甚至对搜索引擎优化(SEO)造成干扰。AnQiCMS 提供了强大的模板过滤功能,帮助我们轻松地清理和格式化这些变量。

AnQiCMS 的模板语法类似于 Django 引擎,它允许我们通过一种叫做“过滤器”(Filters)的机制来处理模板变量。过滤器可以对变量进行各种操作,例如格式化文本、修改字符串、移除特定内容等。使用过滤器非常直观,你只需要在变量名后面加上一个“管道符” |,然后跟随过滤器的名称,如果过滤器需要参数,再用冒号 : 连接参数即可,例如 {{ 变量名 | 过滤器名称 : 参数 }}。如果需要连续使用多个过滤器,只需将它们串联起来:{{ 变量名 | 过滤器1 | 过滤器2 : 参数 }}

移除特定字符的利器:cutreplace 过滤器

当我们想要从模板变量中删除某些特定的字符时,cutreplace 这两个过滤器就派上了用场。

cut 过滤器

cut 过滤器能够删除字符串中所有出现的特定字符。它的用法非常简单,只需指定你想要删除的那个字符。例如,如果有一个变量 productName 的值为 "安企CMS-免费-高效",但你希望移除其中的所有连字符 -,你可以这样使用:

{{ productName|cut:"-" }}

这样输出的结果就会是 "安企CMS免费高效"。需要注意的是,cut 过滤器只能删除单个字符的所有实例,如果你想删除一个词或一段文本,就需要使用 replace 过滤器。

replace 过滤器

replace 过滤器比 cut 更为强大,它可以将字符串中某个特定的关键词(或子字符串)替换为另一个关键词。这对于更复杂的字符清理任务非常有用。它的使用方式是 {{ obj|replace:"旧词,新词" }},其中“旧词”是你想要替换掉的内容,“新词”是你希望替换成的内容,两者之间用英文逗号 , 分隔。

例如,你的文章标题 articleTitle 可能包含 "AnQiCMS是一个优秀的CMS",你想把所有的 "CMS" 替换成 "内容管理系统",可以这样写:

{{ articleTitle|replace:"CMS,内容管理系统" }}

输出会变成 "AnQi内容管理系统是一个优秀的內容管理系统"

如果你的目标是彻底移除某个关键词,你可以将“新词”部分留空。比如,要移除标题中的所有 "优秀" 字样:

{{ articleTitle|replace:"优秀," }}

这会将 "AnQiCMS是一个优秀的CMS" 变为 "AnQiCMS是一个的CMS"

一个非常实用的场景是,当变量中包含多个内部空格时,你希望将它们全部删除,replace 过滤器也能派上用场:

{{ "  这是  包含  多余  空格的  字符串  "|replace:" ","" }}

但请注意,这种方式只会删除 单个空格。如果你有多个连续空格,可能需要多次调用 replace,或者使用更高级的文本处理方式。

处理多余的空格:trim 系列过滤器

多余的空格,特别是字符串开头和结尾的空格,常常会影响内容的对齐和显示。AnQiCMS 提供了 trimtrimLefttrimRight 过滤器来精准处理这些空格。

trim 过滤器

trim 过滤器能够删除字符串开头和结尾的所有空格(包括换行符)。这是最常用的空格清理工具。

例如,有一个从用户输入获取的名称 userName,其值为 " 张三 ",为了避免显示时出现空白,可以使用:

{{ userName|trim }}

这样输出的结果就是整洁的 "张三"trim 也可以指定要删除的首尾特定字符,例如 {{ "###标题###"|trim:"#" }} 会输出 "标题"

trimLefttrimRight 过滤器

如果你的需求更为精细,只想删除字符串开头或结尾的空格,那么 trimLefttrimRight 过滤器将是你的选择。

  • trimLeft 过滤器只删除字符串开头的所有空格:

    {{ "   Hello World   "|trimLeft }}
    

    输出结果为 "Hello World "

  • trimRight 过滤器只删除字符串结尾的所有空格:

    {{ "   Hello World   "|trimRight }}
    

    输出结果为 " Hello World"

trim 类似,这两个过滤器也可以指定删除特定的前导或尾随字符。

组合运用与**实践

在实际应用中,你可能需要组合使用这些过滤器来达到**效果。例如,你可能需要先移除字符串首尾的空格,然后替换掉其中的某些特定字符,再将其中的多个连续空格替换成一个空格。

一个典型的例子是清理从外部数据源获取的文本,它可能同时有首尾空格和内部的特殊符号:

{% set rawText = "   ## AnQiCMS  -  内容管理系统 ##   " %}
{{ rawText|trim|replace:"##,"|replace:" - ","-" }}

这条语句会首先移除 rawText 两端的空格,然后删除所有的 `