我在我的网站上使用Twig作为模板,我在所有其他的twig页面中扩展了layout.html.twig,所以在我的layout.html.twig中我有页面标题:
<title>{% block title %}Title of my website{% endblock %}</title>
Run Code Online (Sandbox Code Playgroud)
现在我的问题是如何在我的所有页面中动态更改此标题,例如我有news.html.twig来显示世界上所有最新的新闻,所以我希望当我显示我的新闻页面时,我有新闻的标题我的页面标题......
<title>{% block title %}Title of the news{% endblock %}</title>
Run Code Online (Sandbox Code Playgroud)
Mic*_*nax 26
我的解决方案在子模板中看起来更优雅:
在你的layout.html.twig:
<title>{% if page_title is defined %} {{ page_title }} | {% endif %} Your Website</title>
Run Code Online (Sandbox Code Playgroud)
在您的子页面模板中:
{% extends '::layout.html.twig' %}
{% set page_title = 'Your page-title' %}
{# Put the rest of your page below #}
Run Code Online (Sandbox Code Playgroud)
你也可以在例如重用标题.做<h1>{{ page_title }}</h1>:-)
MDr*_*tte 16
你很亲密 在您的news.html.twig假设中,您将所有内容都放在这样的块中:
{% extends '::layout.html.twig' %}
{% block content %}
content of the news page here
{% endblock %}`
Run Code Online (Sandbox Code Playgroud)
因此,您所要做的就是为该内容块之外的标题添加另一个块
{% extends '::layout.html.twig' %}
{% block title %}Title of news page{% endblock %}
{% block content %}
content of the news page here
{% endblock %}`
Run Code Online (Sandbox Code Playgroud)
你想象的更简单.
放在主/父布局上
...
<title>{% block title %}{% endblock %} - My Site</title>
...
Run Code Online (Sandbox Code Playgroud)
并且,在内容页面(在子布局上),获取页面标题
...
<h1>{{ block('title') }}</h1>
...
Run Code Online (Sandbox Code Playgroud)
因此,您在头部标题中添加的任何标题都将显示在内容标题中.
| 归档时间: |
|
| 查看次数: |
16786 次 |
| 最近记录: |