Задача показывать в основном меню ссылки log in/logout + ссылку на профайл. Добавил в twig основном меню условие, которое находится между комментариями "Мой код". Код не работает именно в этом месте — система не понимает, что пользователь залогинился и все время отображает "Log In". При этом если вставить этот код в шаблон выше уровнем, например, в page, то все работает как надо.
В чем может быть дело?
{% macro menu_links(items, attributes, menu_level) %}
{% import _self as menus %}
{% if items %}
{%
set classes = [
menu_level == 0 ? 'uk-navbar-nav',
menu_level > 0 ? 'uk-nav',
menu_level > 0 ? 'uk-navbar-dropdown-nav',
]
%}
{% if menu_level > 0 %}
<div class="uk-navbar-dropdown">
{% endif %}
<ul{{ attributes.addClass(classes) }}>
{% for item in items %}
<li{{ item.attributes }}>
{% if item.is_header %}
{{ item.title }}
{% elseif not item.is_divider %}
{{ link(item.title, item.url) }}
{% endif %}
{% if item.below %}
{{ menus.menu_links(item.below, attributes.removeClass(classes), menu_level + 1) }}
{% endif %}
</li>
{% endfor %}
{# Мой код #}
{% if logged_in %}
<li class="user">
<a href="/user" title="Account"><span class="uk-icon uk-margin-small-right" uk-icon="icon: user"></span>{{ user.displayname }}</a>
</li>
<li class="logout">
<a href="/logout" title="Log Out">
<span class="uk-icon uk-margin-small-right" uk-icon="icon: sign-out"></span>
</a>
</li>
{% else %}
<li class="login">
<a href="/login" title="Log In">Log In</a>
</li>
{% endif %}
{# / Мой код #}
</ul>
{% if menu_level > 0 %}
</div>
{% endif %}
{% endif %}
{% endmacro %}
Комментарии
В macro. Почитайте по ссылке:
https://drupal.stackexchange.com/questions/206943/check-if-the-user-is-l...
Вот ещё ссылка, поясняющая как передать переменную в макро: https://stackoverflow.com/questions/15107760/how-can-i-access-template-v...
Спасибо!