У меня есть базовый шаблон с определенным условным заголовком:
{% if blah %}
<h1>Title 1</h1>
{% else %}
<h1>Title 2</h1>
{% endif %}
Есть ли в шаблонах техника/функция, которая позволила бы вам установить заголовок в шаблоне, который простирается от базы?
Очевидно, что вы не можете использовать традиционный блочный тег, поскольку они могут появляться только один раз, но есть ли что-то, что вы могли бы сделать, чтобы эффективно получить {% block title %}
для каждого <h1>
, чтобы любой заголовок, отображаемый из if
, был изменен расширяющим шаблоном?
Чтобы быть более конкретным, код шаблона, который у меня есть в базе:
<div class="wrapper">
{% if request.current_page.get_ancestors|length <= 1 %}
{% block page_title %}
<h1>{{ request.current_page.get_page_title }}</h1>
{% endblock page_title %}
{% else %}
{% for ance in request.current_page.get_ancestors %}
{% if ance.level == 1 %}
{% block page_title %}
<h1>{{ ance.get_page_title }}</h1>
{% endblock page_title %}
{% endif %}
{% endfor %}
{% endif %}
</div>
Изменить
Полный код базового шаблона; http://pastebin.com/cyWAiWn2
Полный код расширяемого шаблона; http://pastebin.com/ThEqff47
Причина этого требования к функциональности заключается в том, что в django-cms я создаю страницу и подключаю свое приложение к этой странице. На этом этапе {{ request.current_page.get_page_title }}
просто вернет заголовок страницы django-cms, которую я создал.
Если вы сделали что-то на этой странице, из-за чего подключенное приложение отправило вас в другое представление/шаблон, вы фактически не меняете страницу в django-cms, поэтому get_page_title
остается прежним, но шаблон, который вы сейчас отобразили, будет почти всегда разные названия.
Очевидно, вы можете включить новый заголовок страницы в виде <h2>
или чего-то еще и поместить его под <h1>
из base_content.html
, но базовый заголовок обычно лишний для необходимого содержимого страницы на этом уровне.