Я пытаюсь показать контент, когда я нахожусь на первой странице моего тестового сайта Drupal 8, но контент отображается на каждой странице:
{% if front_page %}
<header role="banner">
{% if logo %}
<a href="{{ front_page }}" title="{{ 'Home'|t }}" rel="home">
<img src="{{ logo }}" alt="{{ 'Home'|t }}"/>
</a>
{% endif %}
<h1 style="color:black">TESTTESTTESTESTAET</h1>
<h1>test</h1
{{ page.header }}
</header>
{% endif %}
Почему это не работает и как я могу заставить это работать?
Обратите внимание, что если вы хотите предоставить
$variables['is_front']
шаблоны, которые этого не делают, вы можете добавить это в соответствующую функцию предварительной обработки.Это делается так же, как в template_preprocess_page для
page.html.twig
.Тот же ответ здесь
источник
url.path.is_front
в качестве контекста кеша. Смотрите этот комментарий .Если предположить, что используемый вами шаблон - page.html.twig, то переменная, которую вы ищете, - это
is_front
;front_page
содержит URL-адрес главной страницы, инициализированныйtemplate_preprocess_page()
следующим кодом.Для других файлов шаблонов Drupal не предоставляет никаких переменных, сообщающих, посещает ли пользователь первую страницу. Используя код, похожий на тот
template_preprocess_page()
, который вы использовали , вы можете установить эту переменную в функции предварительной обработки для шаблона, который вы используете.Замените
HOOK
на тип шаблона (например, поле для шаблона field.hmtl.twig).источник
Вы можете получить его прямо в html.html.twig, используя root_path. Это уже выводится в строке 31 для установки класса тела:
{%, если не root_path%}
КОД
{% endif%}
источник