Проблема с добавлением css классов во Views по БЭМ методологии

Аватар пользователя Alex_web Alex_web 10 сентября в 16:35

Доброго времени суток.

Столкнулся с такой проблемой при верстке сайта. Добавляю класс для вьюхи, например, my_class. Сохраняюсь. В коде выводится my-class, вместо my_class. То есть, Views заменяет подчеркивания на дефисы. Аналогичное поведение заметил у модуля Link https://www.drupal.org/project/link

Подскажите, пожалуйста, почему так происходит и как это исправить?

Лучший ответ

Комментарии

Аватар пользователя madt madt 10 сентября в 18:29
1

Замена символа подчеркивания на дефис — встроенное поведение в Drupal 7.

Можно использовать двойное подчеркивание, например, block__element, если добавить $conf['allow_css_double_underscores'] = TRUE; в settings.php.

В Drupal 8/9 это включено по умолчанию.

Аватар пользователя VasyOK VasyOK 10 сентября в 18:39
1

Если надо по БЭМ - выпейте яда переписывайте шаблон вьюхи (или поля). Во вьюхе есть "Информация" - там и имена шаблонов можно посмотреть и сам вывод шаблонов взять.

Аватар пользователя Alex_web Alex_web 11 сентября в 9:43

Да, интересует верстка сайтов на Друпал именно по методологии БЭМ.

Напомню, что согласно методологии БЭМ:
block-name - блок
block-name__element - элемент
block-name_modifier, block-name__element_modifier - модификаторы.

Соответственно, желательно использовать в именах классов одинарное и двойное подчеркивание.

Вариант, предложенный madt, с $conf['allow_css_double_underscores'] = TRUE; в принципе рабочий, если в именах модификаторов использовать двойной дефис, а не одинарное подчеркивание. Пример block-name--modifier

Интересно, что в модуле https://www.drupal.org/project/block_class в именах классов можно без проблем использовать одинарное подчеркивание. Жаль, что моих знаний не хватает, чтобы понять, как это там реализовано, и можно ли это применить для других модулей Друпала.

Аватар пользователя madt madt 11 сентября в 11:04
1

БЭМ допускает несколько альтернативных схем наименования, одна из них — «Стиль Two Dashes»:

block-name__elem-name--mod-name--mod-val

Такая схема будет работать с включенным $conf['allow_css_double_underscores'] = TRUE;

Пояснение:

  • Имена записываются латиницей в нижнем регистре.
  • Для разделения слов в именах БЭМ-сущностей используется дефис (-).
  • Имя элемента отделяется от имени блока двумя подчеркиваниями (__).
  • Булевые модификаторы отделяются от имения блока или элемента двумя дефисами (--).
  • Значение модификатора отделяется от его имени двумя дефисами (--).
Аватар пользователя vlucas vlucas 11 сентября в 14:37
1

Не по теме, но всё-таки.
Если используете БЭМ, что очень правильно, советую посмотреть в сторону темы Никлана Glisseo, которая вам упростит жизнь в разы и позволит всё кастомизировать нормально.