在安企CMS中,内容管理不仅限于后台的增删改查,更体现在前端展示的灵活与多样。面对网站中常见的单页面(如“关于我们”、“联系我们”等),有时我们希望它们在列表或导航中显示时,能统一带上特定的标识,比如“【公司公告】”或“ - 官方信息”,以增强品牌识别度或区分内容类型。如果逐一修改后台标题,不仅效率低下,也缺乏统一性和可维护性。此时,利用AnqiCMS强大的模板引擎功能,配合巧妙的过滤器,可以轻松实现这一需求。

背景:理解单页面与标题的重要性

AnqiCMS提供了pageList标签,用于方便地循环展示网站中创建的各个单页面。每个单页面都拥有标题、链接、内容等基本属性。在默认情况下,使用{{ item.Title }}即可输出单页面的原始标题。然而,在实际运营中,网站可能需要对这些标题进行二次修饰,以适应特定的营销策略、内容分类标准,或者仅仅是为了让用户界面更加友好和一致。例如,您可能希望所有法律声明页面都带上“【法律声明】”的前缀,或者所有招聘页面都加上“-岗位列表”的后缀。

核心工具:add过滤器的妙用

AnqiCMS的模板系统借鉴了Django风格的标签和过滤器,提供了极高的灵活性。在众多过滤器中,add过滤器是一个看似简单却功能强大的工具,它不仅能用于数字的相加运算,更能胜任字符串的拼接任务。其基本用法是{{ obj|add:obj2 }},它会将objobj2进行连接(如果是字符串)或相加(如果是数字)。在为单页面标题动态添加前缀或后缀的场景中,我们正是利用了它出色的字符串拼接能力。

实战演练:动态添加前缀与后缀

让我们通过几个具体的例子,看看如何将add过滤器应用到pageList中的单页面标题上。

首先,一个典型的pageList循环大致是这样的:

{% pageList pages %}
    {% for item in pages %}
        <li>
            <a href="{{item.Link}}">{{item.Title}}</a>
        </li>
    {% endfor %}
{% endpageList %}

现在,我们来尝试为这些标题动态添加前缀或后缀。

1. 添加统一的前缀

如果您希望所有单页面标题都带上一个统一的前缀,比如“【最新发布】”,您可以这样修改模板代码:

{% pageList pages %}
    {% for item in pages %}
        <li>
            <a href="{{item.Link}}">{{ "【最新发布】"|add:item.Title }}</a>
        </li>
    {% endfor %}
{% endpageList %}

在这段代码中,"【最新发布】"是一个字符串字面量,通过管道符号|将其传递给add过滤器,并以item.Title作为第二个参数。add过滤器会将这两个字符串连接起来,形成如“【最新发布】关于我们”、“【最新发布】联系方式”这样的效果。请注意,为了视觉效果,在前缀字符串的末尾添加一个空格通常是个好习惯,例如"【最新发布】 "

2. 添加统一的后缀

类似地,如果您想为标题添加统一的后缀,比如“ - 官方信息”,只需将add过滤器的位置和参数顺序调整一下即可:

{% pageList pages %}
    {% for item in pages %}
        <li>
            <a href="{{item.Link}}">{{ item.Title|add:" - 官方信息" }}</a>
        </li>
    {% endfor %}
{% endpageList %}

这里,item.Title作为第一个参数传入add过滤器,然后拼接上字符串字面量" - 官方信息"。同样,在后缀字符串的开头添加空格可以确保更好的可读性。

3. 同时添加前缀和后缀

当然,您也可以同时为标题添加前缀和后缀。add过滤器支持链式调用,使得操作非常直观:

{% pageList pages %}
    {% for item in pages %}
        <li>
            <a href="{{item.Link}}">{{ "【公司】"|add:item.Title|add:" (必读)" }}</a>
        </li>
    {% endfor %}
{% endpageList %}

通过两次add过滤器的链式调用,单页面标题将会呈现出“【公司】关于我们 (必读)”这样的格式。

4. 基于条件动态添加前缀或后缀

更灵活的场景是,您可能需要根据单页面的某些特定属性来决定是否添加前缀或后缀,或者添加不同的文本。这时,AnqiCMS模板的if逻辑判断标签就能派上用场:

{% pageList pages %}
    {% for item in pages %}
        <li>
            {% if item.Id == 1 %} {# 假设Id为1的页面是"关于我们" #}
                <a href="{{item.Link}}">{{ "【重磅】"|add:item.Title }}</a>
            {% elif item.Title|contain:"招聘" %} {# 假设标题包含"招聘"字样 #}
                <a href="{{item.Link}}">{{ item.Title|add:" - 最新岗位" }}</a>
            {% else %}
                <a href="{{item.Link}}">{{ item.Title }}</a>
            {% endif %}
        </li>
    {% endfor %}
{% endpageList %}

在这个示例中,我们结合了ifelifelse以及contain过滤器,实现了更精细的控制:如果单页面ID为1,则加“【重磅】”前缀;如果标题中包含“招聘”二字,则加“- 最新岗位”后缀;否则,显示原标题。

注意事项与**实践

在运用add过滤器动态修改标题时,有几个方面值得我们关注:

  • 空格处理: 如前所述,务必留意您添加的前缀或后缀字符串中是否包含必要的空格,以保证最终显示效果的自然流畅。
  • 前端展示: 这种修改方式仅影响前端页面的显示效果,不会触及数据库中存储的原始单页面标题内容。这意味着您可以随时调整前端展示策略,而不会对内容本身造成永久性改变,极大提升了运营的灵活性。
  • SEO考量: 虽然这主要是前端显示,但搜索引擎在抓取和渲染页面时也会看到这些修饰后的标题。因此,确保前缀或后缀的内容简洁、相关,并能辅助而非干扰搜索引擎对页面主题的理解,避免堆砌关键词。
  • **可读性与用户体验: