Ich versuche, Inhalte anzuzeigen, wenn ich auf der Startseite meiner Drupal 8-Testwebsite bin, aber der Inhalt wird auf jeder Seite angezeigt:
{% 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 %}
Warum funktioniert das nicht und wie kann ich das zum Laufen bringen?
Wenn Sie
$variables['is_front']
Vorlagen bereitstellen möchten, die dies nicht tun, können Sie dies der betreffenden Vorverarbeitungsfunktion hinzufügen.Dies geschieht auf die gleiche Weise in template_preprocess_page für
page.html.twig
.Gleiche Antwort hier
quelle
url.path.is_front
als Cache-Kontext hinzufügen . Siehe diesen Kommentar .Unter der Annahme , dass die Vorlage , die Sie verwenden , ist page.html.twig, dann ist die Variable , die Sie suchen ist
is_front
;front_page
Enthält die URL der Startseite, dietemplate_preprocess_page()
mit dem folgenden Code initialisiert wurde .Für andere Vorlagendateien bietet Drupal keine Variablen an, die Sie darüber informieren, ob der Benutzer die Startseite besucht. Mit einem ähnlichen Code wie dem von
template_preprocess_page()
können Sie diese Variable in der Vorverarbeitungsfunktion für die von Ihnen verwendete Vorlage festlegen.Ersetzen Sie
HOOK
durch den Vorlagentyp (z. B. Feld für die Vorlage field.hmtl.twig).quelle
Sie können es direkt in html.html.twig mit root_path abrufen. Es wird bereits in Zeile 31 ausgegeben, um die Body-Klasse festzulegen:
{% falls nicht root_path%}
CODE
{% endif%}
quelle