web-dev-qa-db-fra.com

Masquer la région lorsque le menu de blocage est vide

J'ai obtenu le menu principal de 2e niveau dans un bloc dans la barre latérale, drupal 8 masque correctement le menu (et le bloc) lorsque l'utilisateur parcourt une page qui n'est pas dans ce menu, mais le thème continue d'afficher la région vide. La condition {% if page.region%} est vraie. existe-t-il un moyen de résoudre ce problème?

4
Stefano Fiaschi

Il vaut mieux utiliser la construction

{% if page.region|render|striptags|trim|length > 0 %} ... {% endif %}

Vous pouvez donc vérifier s'il y a du contenu ou non.

3
Ian

Si vous utilisez le module menu_block , ce patch résoudra le problème d'une région qui apparaît même lorsqu'il n'y a pas de sous-éléments pour un menu. Testé uniquement sur le bloc de menu version 8.x-1.5.

1

Vous pouvez utiliser {% if page.region|render|striptags %} pour vous assurer que les régions contiennent bien du contenu. Voir aussi la discussion ici: [meta] Les thèmes vérifient incorrectement les tableaux rendables lors de la détermination de la visibilité .

0
MidnightMotion

Je l'ai fait de cette façon pour réduire le nombre de rendus.

{% set render_sidebar_first = page.sidebar_first|render %}
{% if render_sidebar_first and render_sidebar_first|striptags|trim|length > 0 %}
  {% block sidebar_first %}
    <aside class="{{ sidebar_class }}" role="complementary">
        {{ render_sidebar_first }}
    </aside>
  {% endblock %}
{% endif %}
0
knice