1. Главная
  2. Форумы
  3. Техподдержка Drupal
  4. Решение проблем

Как добавить класс в шаблоне?

Главные вкладки

Лучший ответ

Аватар пользователя negociant negociant 6 февраля 2018 в 12:40
1

Так нужно?

{% import _self as menus %}

{{ menus.menu_links(items, attributes, 0) }}

{% macro menu_links(items, attributes, menu_level) %}
{% import _self as menus %}
{% if items %}
{% if menu_level == 0 %}
<ul{{ attributes.addClass('navbar-nav', 'mr-auto') }}>
{% else %}
<ul class="dropdown-menu">
{% endif %}
{% for item in items %}
{% set classes = [
'nav-item',
item.below ? 'dropdown',
item.is_expanded ? '',
item.is_collapsed ? 'show',
item.in_active_trail ? 'active',
] %}
<li{{ item.attributes.addClass(classes) }}>
{% if item.below %}
{{ link (item.title, item.url, {'class': 'nav-link dropdown-toggle',
'data-toggle': 'dropdown', 'aria-expanded': 'true'}) }}
{{ menus.menu_links(item.below, attributes, menu_level + 1) }}
{% else %}
{% if menu_level == 0 %}
{{ link (item.title, item.url, {'class': 'nav-link'}) }}
{% else %}
{{ link (item.title, item.url, {'class': 'dropdown-item'}) }}
{% endif %}
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
{% endmacro %}

Комментарии

Аватар пользователя VasyOK VasyOK 6 февраля 2018 в 3:50

Чем же плохо? Большая часть информации выводится через views (у меня). Бeз views мне и Drupal не нужен.
Скриншоты кстати не вижу. Мне партия не разрешает на такие сайты ходить, ВПН лень включать.

Аватар пользователя negociant negociant 6 февраля 2018 в 12:08
{% import _self as menus %}

{{ menus.menu_links(items, attributes, 0) }}

{% macro menu_links(items, attributes, menu_level) %}
{% import _self as menus %}
{% if items %}
{% if menu_level == 0 %}
<ul{{ attributes.addClass('navbar-nav', 'mr-auto') }}>
{% else %}
<ul class="dropdown-menu">
{% endif %}
{% for item in items %}
{% set classes = [
'nav-item',
item.below ? 'dropdown',
item.is_expanded ? '',
item.is_collapsed ? 'show',
item.in_active_trail ? 'active',
] %}
<li{{ item.attributes.addClass(classes) }}>
{% if item.below %}
{# В link() передаем нужные аттрибуты и класс .dropdown-item #}
{{ link (item.title, item.url, {'class': 'dropdown-item',
'data-toggle': 'dropdown', 'aria-expanded': 'true'}) }}
{{ menus.menu_links(item.below, attributes, menu_level + 1) }}
{% else %}
{{ link (item.title, item.url, {'class': 'nav-link'}) }}
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
{% endmacro %}

Аватар пользователя negociant negociant 6 февраля 2018 в 12:40
1

Так нужно?

{% import _self as menus %}

{{ menus.menu_links(items, attributes, 0) }}

{% macro menu_links(items, attributes, menu_level) %}
{% import _self as menus %}
{% if items %}
{% if menu_level == 0 %}
<ul{{ attributes.addClass('navbar-nav', 'mr-auto') }}>
{% else %}
<ul class="dropdown-menu">
{% endif %}
{% for item in items %}
{% set classes = [
'nav-item',
item.below ? 'dropdown',
item.is_expanded ? '',
item.is_collapsed ? 'show',
item.in_active_trail ? 'active',
] %}
<li{{ item.attributes.addClass(classes) }}>
{% if item.below %}
{{ link (item.title, item.url, {'class': 'nav-link dropdown-toggle',
'data-toggle': 'dropdown', 'aria-expanded': 'true'}) }}
{{ menus.menu_links(item.below, attributes, menu_level + 1) }}
{% else %}
{% if menu_level == 0 %}
{{ link (item.title, item.url, {'class': 'nav-link'}) }}
{% else %}
{{ link (item.title, item.url, {'class': 'dropdown-item'}) }}
{% endif %}
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
{% endmacro %}

Аватар пользователя VasyOK VasyOK 6 февраля 2018 в 15:24

N-I wrote:

У меня меню таксономии.

И че? Делаем 2 вьюхи. Одна выводит термины 1-го уровня, вторая 2-го. Cоединяем через https://www.drupal.org/project/views_field_view

А про модуль taxonomy_menu есть информация (от бывшего вождя Gor-a) что он, к каким--то ужасам приводит.

Логотип drupal.ru

Содержимое сайта публикуется на условиях CreativeCommons Attribution-ShareAlike 3.0 или более поздней версии. Программные коды в тексте статей — на условиях GNU GPL v2 или более поздней версии.

Документация по совместной работе с репозиторием drupal.ru – https://docs.drupal.ru/code

Drupal – торговая марка Дриса Бёйтарта

12+

AltStyle によって変換されたページ (->オリジナル) /