首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查块在Zola使用的Tera模板引擎中是否有值?

如何检查块在Zola使用的Tera模板引擎中是否有值?
EN

Stack Overflow用户
提问于 2022-07-13 03:23:16
回答 1查看 20关注 0票数 0

在我的Zola (使用Tera模板引擎)网站上,我有这样一个标题:

代码语言:javascript
复制
<title>{% block title %}{% endblock %} - Newbyte's blog</title>

这会生成如下内容:

代码语言:javascript
复制
<title>Birds around the world - Newbyte's blog</title>

但是,如果我没有在子模板中指定标题,它将生成以下内容:

代码语言:javascript
复制
<title> - Newbyte's blog</title>

如果没有指定的标题,我想省略“-”部分,如果只生成以下内容

代码语言:javascript
复制
<title>Newbyte's blog</title>

在Tera模板引擎中有任何方法可以实现这一点吗?我试过这样做,但似乎行不通。它从不生成“-”部分:

代码语言:javascript
复制
<title>{% block title %}{% if title %} - {% endif %}{% endblock %}Newbyte's blog</title>
EN

回答 1

Stack Overflow用户

发布于 2022-11-26 14:42:03

我知道,在jinja2中,您可以通过调用self.block_name()来检查块是否为空,但是id在zola上不起作用。

但是,我知道如何实现你想要的(标题)。

首先,用config.tomltitle键上定义页面的标题(如果愿意的话,也可以定义另一个)。

然后,将下面的模板放在根html上。

代码语言:javascript
复制
{% if page and page.title %}
  {% set title = page.title ~ ' - ' ~ config.title %}
{% else %}
  {% set title = config.title %}
{% endif %}

<title>
  {{ title }}
</title>

基本上,它检查当前页面(例如,post )是否其呈现中有一个在前端定义的标题。如果是这样的话,它将一个名为title的变量设置为{page.title} - {config.title}

如果它没有这个变量,它将使用在您的config.toml上定义的标题

然后,它在<title>标记中使用该变量。

请注意,这意味着您只需要将页面标题设置在标记文件的前面,而不需要使用块标题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72960566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档