it-swarm.com.de

Wie erkenne ich richtig, ob die Region leer ist?

Ich habe die Bedingung zum Drucken von Regionen in meiner Seitenvorlage als ist nicht leer, aber es werden immer leere Regionen gedruckt, egal was passiert. Was ist der richtige Weg, um leere Regionen zu erkennen?

Zum Beispiel druckt {% if page.local_tasks is not empty %}{{ page.local_tasks }}{% endif %}<div class="region region-local-tasks"></div> Aus.

Wenn ich die Region in themename_preprocess_page() mit var_dump(drupal_render($variables['page']['highlighted'])); rendere, erhalte ich SafeString mit Platzhalter-Token:

<div class="region region-highlighted"><drupal-render-placeholder callback="Drupal\Core\Render\Element\StatusMessages::renderMessages" arguments="0" token="a8c34b5e"></drupal-render-placeholder></div>

Also, technisch die Region ist nicht leer, aber ich kann nichts dagegen tun.

11
user21641

TL; DR dafür ist, dass es keine Möglichkeit gibt, zuverlässig zu überprüfen, ob die Region leer ist oder nicht in der Vorlage.

In Drupal 8 an dem Punkt, an dem wir uns auf Vorlagenebene befinden, können wir nicht feststellen, ob die Region Inhalt enthält oder nicht, da der Inhalt träge gerendert wird. Es ist offen Drupal 8 Ausgabe dafür.

Um dies zu erreichen, müssen Sie wahrscheinlich CSS schreiben, das prüft, ob die Region leer ist. Sie können versuchen, mit : leeren Pseudo-Selektor zu verwenden.

10
lauriii

versuchen Sie, Filter nach dem Rendern wie folgt anzuwenden:

{% set has_sidebar_first = page.sidebar_first|render|striptags|trim is not empty %}
{% if has_sidebar_first %}
    {# ... #}
{% endif %}
10

In twig sollten Sie wirklich in der Lage sein:

{% if page.local_tasks %}{{ page.local_tasks }}{% endif %}

Möglicherweise befindet sich jedoch etwas in page.local_tasks (z. B. leeres Markup). Bitte versuche folgendes:

{% if page.local_tasks|striptags|trim %}{{ page.local_tasks }}{% endif %}
2
Queenvictoria

Das hat bei mir funktioniert.

{% if page.sidebar_first|render|striptags %}
<aside id="sidebar-first" class="sidebar sidebar-first layout-sidebar-first" role="complementary">{{ page.sidebar_first }}</aside>
{% endif %}

Einfach genug.

1
Shalo