Próbuję wyświetlać zawartość, gdy jestem na pierwszej stronie testowej witryny Drupal 8, ale treść jest wyświetlana na każdej stronie:
{% 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 %}
Dlaczego to nie działa i jak mogę to zrobić?
Pamiętaj, że jeśli chcesz udostępnić
$variables['is_front']
szablony, które tego nie robią, możesz dodać to do odpowiedniej funkcji przetwarzania wstępnego.Odbywa się to w ten sam sposób w szablonie_preprocess_page dla
page.html.twig
.Ta sama odpowiedź tutaj
źródło
url.path.is_front
jako kontekst pamięci podręcznej. Zobacz ten komentarz .Zakładając, że używasz szablonu page.html.twig, zmienna, której szukasz, to
is_front
;front_page
zawiera adres URL strony głównej, zainicjowanytemplate_preprocess_page()
za pomocą następującego kodu.W przypadku innych plików szablonów Drupal nie udostępnia żadnych zmiennych informujących, czy użytkownik odwiedza pierwszą stronę. Używając kodu podobnego do używanego z
template_preprocess_page()
, możesz ustawić tę zmienną w funkcji wstępnego przetwarzania dla używanego szablonu.Zastąp
HOOK
typem szablonu (np. Pole dla szablonu field.hmtl.twig).źródło
Możesz pobrać go bezpośrednio w pliku html.html.twig, używając ścieżki root_path. Jest już wyprowadzany w linii 31, aby ustawić klasę nadwozia:
{% jeśli nie root_path%}
KOD
{% endif%}
źródło