2012-06-27 8 views
11

내 웹 사이트에서 템플릿으로 Twig를 사용하여 다른 모든 twig 페이지에서 layout.html.twig를 확장하므로 내 layout.html.twig에 페이지 제목이 있습니다. :symfony2로 페이지의 제목을 동적으로 변경하는 방법

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

이제 내 문제는 내가 세상의 모든 latests 뉴스를 보여 news.html.twig이 예를 들어, 내 모든 페이지에 dynimacally이 제목을 변경하는 방법, 그래서 내 뉴스 페이지를 표시 할 때 나는 희망 페이지 제목에 뉴스 제목이 있습니다 ...

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

답변

12

닫기가 끝났습니다. 당신의 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 %}` 
+0

정말 매력적입니다 ... – Nll

22
당신의 layout.html.twig에서

:

내 솔루션은 좀 더 우아한 아이 템플릿에서 보이는 자녀의 페이지 템플릿에서 5,

:

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

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

{# Put the rest of your page below #} 

그리고 당신은 또한 예에서 제목을 다시 사용할 수 있습니다. 하고있는 것 <h1>{{ page_title }}</h1> :-)

+5

대시 (또는 다른 구분 기호)를 다음과 같이 조건부 블록에 배치해야합니다. {% if page_title is %} {{page_title}} - {% endif %} 귀하의 웹 사이트. 그렇지 않으면 page_title이 정의되지 않은 경우 기본 제목 앞에 후행 구분 기호가 표시됩니다. –

+0

기본 제목을 제공하기 때문에 좀 더 우아합니다. – Julien

+1

또 다른 이점은이 변수를 다시 사용할 수 있다는 것입니다. 즉, '

{{page_title}}

'입니다. – rybo111

8

당신이 상상하는 것이 더 간단합니다. (아이의 레이아웃에) 콘텐츠 페이지에서 주/부모 레이아웃

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

을하고,에

넣어, 당신은 머리를 제목에 넣어 페이지 제목 그래서

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

, 어떤 제목을 얻을 콘텐츠 제목에 표시됩니다.

관련 문제