15

我在我的网站中使用 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>
4

4 回答 4

28

我的解决方案在子模板中看起来更优雅:

在你的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>:-)

于 2013-08-07T18:23:37.333 回答
17

你很亲密。在您的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 %}`
于 2012-06-27T17:43:03.020 回答
7

比你想象的更简单。

放置主/父布局

...
<title>{% block title %}{% endblock %} - My Site</title>
...

并且,在内容页面(在子布局上),获取页面标题

...
<h1>{{ block('title') }}</h1>
...

因此,您在 head title 中输入的任何标题都将显示在 content title 中。

于 2013-10-23T15:07:43.030 回答
0
{% block title %} {{ post.title }}Symfony web.app{% endblock %}
于 2020-08-21T17:54:20.120 回答