我在我的网站上使用Twig作为模板,我在所有其他的twig页面中扩展了layout.html.twig,所以在我的layout.html.twig中我有页面标题:
<title>{% block title %}Title of my website{% endblock %}</title>
现在我的问题是如何在我的所有页面中动态更改此标题,例如我有news.html.twig来显示世界上所有最新消息,所以我希望当我显示我的新闻页面时,我有一个标题我的页面标题中的新闻......
<title>{% block title %}Title of the news{% endblock %}</title>
答案 0 :(得分:25)
我的解决方案在子模板中看起来更优雅:
在layout.html.twig
:
<title>{% if page_title is defined %} {{ page_title }} | {% endif %} Your Website</title>
在您的子页面模板中:
{% extends '::layout.html.twig' %}
{% set page_title = 'Your page-title' %}
{# Put the rest of your page below #}
你也可以在例如重复使用标题。做<h1>{{ page_title }}</h1>
: - )
答案 1 :(得分:15)
你很亲密。在news.html.twig
中,我假设您将所有内容都放在这样的块中:
{% extends '::layout.html.twig' %}
{% block content %}
content of the news page here
{% endblock %}`
所以你要做的就是为该内容块的标题 添加另一个块
{% extends '::layout.html.twig' %}
{% block title %}Title of news page{% endblock %}
{% block content %}
content of the news page here
{% endblock %}`
答案 2 :(得分:8)
你想象的更简单。
放置主/父布局
...
<title>{% block title %}{% endblock %} - My Site</title>
...
并且,在内容页面(在子布局上),获取页面标题
...
<h1>{{ block('title') }}</h1>
...
因此,您在头部标题中添加的任何标题都将显示在内容标题中。
答案 3 :(得分:0)