You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zola所用Tera模板引擎如何判断block块是否有值并条件渲染?

Tera模板实现title块为空时自动省略分隔符的正确写法

原有失效写法的核心原因

  • 把连字符的判断逻辑写在了title块内部,子模板重写title块时会完全覆盖块内所有原有代码,判断逻辑不会被执行
  • 判断条件里的title变量从未被定义赋值,条件永远为假,始终不会输出连字符

可直接使用的实现代码

在Zola内置的Tera模板环境中,通过内置块内容访问语法配合空白控制符即可实现需求,基础模板的title标签代码修改为如下:

<title>
{%- block title -%}{%- endblock -%}
{%- if block.title | trim is not empty -%} - {%- endif -%}
Newbyte's blog
</title>

代码逻辑说明

  • {%- -%}是Tera的空白控制语法,会自动移除标签前后的空格、换行,避免title内容出现多余空白
  • block.title是Tera内置语法,可以直接获取title块渲染完成后的完整内容,不需要额外手动捕获赋值
  • trim过滤器会过滤块内容首尾的空白字符,避免子模板误写空格、换行导致分隔符异常显示
  • 仅当title块渲染后的有效内容非空时,才会输出-分隔符,块为空时直接输出站点名称

渲染效果验证

  • 子模板定义title块内容(例如{% block title %}Birds around the world{% endblock %})时,渲染结果符合预期:
    <title>Birds around the world - Newbyte's blog</title>
    
  • 子模板未定义title块内容时,自动省略分隔符:
    <title>Newbyte's blog</title>
    

内容的提问来源于stack exchange,提问作者Newbyte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:48:15