15

私のウェブサイトのテンプレートにTwigを使用していlayout.html.twigますが、他のすべての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>
...

そのため、ヘッド タイトルに入力したタイトルはコンテンツ タイトルに表示されます。

于 2013-10-23T15:07:43.030 に答える