在 AnQiCMS 的日常运营中,我们经常会遇到需要对网站前端展示进行微调的场景,尤其是在导航这样用户频繁接触的区域。安企CMS 提供了灵活的模板标签和过滤器,让这些细致的调整变得轻松。今天,我们就来聊聊 navList 导航列表中 replace 过滤器的一个实用应用,它能帮助我们更精细地控制导航内容的呈现。

认识 replace 过滤器

首先,我们简单回顾一下 replace 过滤器。顾名CMS 模板中,它能帮我们把字符串中的某个特定部分,替换成我们想要的新内容。它的使用方式非常直观:{{ obj|replace:"旧内容,新内容" }}。在这里,obj 是你想要操作的字符串变量,而“旧内容”和“新内容”则分别代表你希望被替换掉的和替换上去的文本。值得一提的是,如果你把“新内容”留空,那么“旧内容”就会被直接移除。

navList 标签与 replace 的结合点

navList 标签是安企CMS 用来生成网站导航列表的核心工具。它能从后台获取我们精心配置的导航数据,包括导航的标题(Title)、子标题(SubTitle)、描述(Description)以及链接(Link)等信息,并将其呈现在网站前端。

在实际的内容运营中,后台的导航数据可能出于管理或历史原因,并不总是与前端展示的**实践完全一致。这时候,直接修改后台数据可能会影响其他功能或导致不必要的复杂性。而 replace 过滤器就成了在不触动后台逻辑的前提下,优化前端导航展示的利器。

以下是一些具体的应用场景:

1. 优化导航文字显示,提升用户体验

我们可能会遇到这样的情况:后台为了方便管理,导航标题设置得比较详细或包含了一些内部标识符,但这些内容直接展示给用户时显得冗长或不够友好。

例如,后台导航项的标题可能是“公司简介与文化”,但在网站导航栏上,我们更希望它简洁地显示为“关于我们”。这时,replace 过滤器就能派上用场:

{% navList navs %}
<ul>
    {%- for item in navs %}
        <li>
            <a href="{{ item.Link }}">
                {{ item.Title|replace:"公司简介与文化,关于我们" }}
            </a>
            {# 如果有二级导航,也可以类似处理 #}
            {%- if item.NavList %}
            <dl>
                {%- for inner in item.NavList %}
                    <dd>
                        <a href="{{ inner.Link }}">
                            {{ inner.Title|replace:"产品详情页,产品展示" }}
                        </a>
                    </dd>
                {% endfor %}
            </dl>
            {% endif %}
        </li>
    {% endfor %}
</ul>
{% endnavList %}

再比如,某些导航标题可能不小心带上了多余的符号或空格,为了保持导航栏的整洁,我们可以利用 replace 过滤器将其移除:

{% navList navs %}
<ul>
    {%- for item in navs %}
        <li>
            <a href="{{ item.Link }}">
                {# 移除标题中的叹号和多余空格 #}
                {{ item.Title|replace:"!, "|replace:"  ," }}
            </a>
        </li>
    {% endfor %}
</ul>
{% endnavList %}

通过这种方式,我们可以在不改变后台原始数据的情况下,确保用户看到的是最优化、最简洁的导航文字。

2. 动态添加或修改导航链接参数,便于数据追踪

在进行内容营销或流量分析时,我们可能需要为导航链接添加特定的追踪参数(UTM参数或其他自定义参数),以便区分用户从哪个导航入口进入网站。使用 replace 过滤器,我们可以轻松地实现这一目标。

假设我们希望所有以 .html 结尾的导航链接都自动带上 ?source=nav 的参数:

{% navList navs %}
<ul>
    {%- for item in navs %}
        <li>
            {# 为链接添加追踪参数 #}
            <a href="{{ item.Link|replace:".html",".html?source=nav" }}">
                {{ item.Title }}
            </a>
            {%- if item.NavList %}
            <dl>
                {%- for inner in item.NavList %}
                    <dd>
                        <a href="{{ inner.Link|replace:".html",".html?source=subnav" }}">
                            {{ inner.Title }}
                        </a>
                    </dd>
                {% endfor %}
            </dl>
            {% endif %}
        </li>
    {% endfor %}
</ul>
{% endnavList %}

这样一来,每次用户点击导航链接时,都会自动携带我们预设的追踪参数,极大地便利了营销效果的衡量。

3. 统一品牌词或特定关键词的显示格式

在多站点或多编辑人员协作的环境中,品牌名称或某些专业术语的拼写和大小写可能不够统一。虽然安企CMS 提供了内容替换功能,但对于导航这种高频展示区域,直接在模板层进行标准化处理会更加灵活高效。

例如,我们希望所有导航标题中的“安企CMS”都严格按照“AnQiCMS”的大小写格式显示,同时将“Go语言”规范为“GoLang”:

”`twig {% navList navs %}

    {%- for item in navs %}
        <li>
            <a href="{{ item.Link }}">
                {# 统一品牌词和技术术语的显示格式 #}
                {{ item.Title