2012-06-27 45 views
11

Im usando Twig para la plantilla en mi sitio web, extiendo layout.html.twig en todas mis otras ramas de páginas, por lo que en mi layout.html.twig tengo el título de página :Cómo cambiar el título de la página dinámicamente con symfony2

<title>{% block title %}Title of my website{% endblock %}</title> 

Ahora mi problema es cómo cambiar este título dynimacally en todas mis páginas, por ejemplo tengo news.html.twig para mostrar todas las noticias latests en el mundo, así que espero que cuando muestro mi página de noticias Tengo el título de las noticias en mi título de página ...

<title>{% block title %}Title of the news{% endblock %}</title> 

Respuesta

12

Usted está cerca. En su news.html.twig que se supone que tiene todo su contenido en un bloque de la siguiente manera:

{% extends '::layout.html.twig' %} 

{% block content %} 
    content of the news page here 
{% endblock %}` 

Así que todo lo que tiene que hacer es añadir otro bloque por el título fuera de ese bloque de contenido

{% extends '::layout.html.twig' %} 

{% block title %}Title of news page{% endblock %} 

{% block content %} 
    content of the news page here 
{% endblock %}` 
+0

realmente gracias es como un encanto ... – Nll

22

Mi solución se ve un poco más elegante en el niño en plantillas:

en su layout.html.twig:

<title>{% if page_title is defined %} {{ page_title }} | {% endif %} Your Website</title> 

en su hijo page-plantillas:

{% extends '::layout.html.twig' %} 

{% set page_title = 'Your page-title' %} 

{# Put the rest of your page below #} 

Y también se puede volver a utilizar el título de ejemplo. una haciendo <h1>{{ page_title }}</h1> :-)

+5

Debe colocar el guión (o cualquier otro delimitador) dentro del bloque condicional, así: {% if page_title se define%} {{page_title}} - {% endif%} Su sitio web. De lo contrario, si page_title no está definido, obtendrás un delimitador final antes de tu título base. –

+0

Es un poco más elegante, ya que proporciona un título predeterminado. – Julien

+1

Otro beneficio es que puede reutilizar esta variable, es decir, '

{{page_title}}

'. – rybo111

8

Es más simple de lo que imaginas.

Póngase diseño/matriz principal

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

y, en una página de contenido (en diseño infantil), obtener el título de la página

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

Por lo tanto, cualquier título que se pone en el título cabeza se mostrará en el título del contenido.

Cuestiones relacionadas