Я хочу добавить класс к <a>
тегу поля, которое состоит из ссылки и текста. (Это поле типа Link .) Имя поля - content.field_c_button_link.
В файл шаблона я хочу добавить что-то вроде следующего.
{{ content.field_c_button_link.0.addClass('button blue') }}
Как правильно добавить класс?
Согласно ответу Патрика Шеффера, я посмотрел настройки поля, в котором я могу добавить дополнительные классы CSS, но не смог найти ни одного. Это скриншот того, что я могу редактировать в поле ссылки.
entities
8
theming
navigation
Maidi
источник
источник
'#field_name'
вместо'#name'
.Самый простой способ добиться этого - использовать любой из этих двух модулей.
1. Link Class - модуль класса Link предоставляет новую форму виджета для поля типа Link. Этот виджет позволяет редактору добавлять класс к полям Link, привязанным к их содержимому.
2. Атрибуты ссылок - Виджет атрибутов ссылок предоставляет дополнительный виджет для поля ссылок, найденного в ядре Drupal. Виджет позволяет пользователям устанавливать атрибуты на их ссылку.
Кроме того, модуль изменяет поле ссылки на содержимое ссылки меню по умолчанию, чтобы использовать этот виджет, позволяя ссылкам меню иметь атрибуты.
id, класс, имя, цель, rel, accesskey
После того, как любой из этих двух вариантов включен, мы можем установить настройки виджета для поля «Ссылка» в разделе «Управление отображением формы» для конкретного поля ссылки.
Смотрите прикрепленное изображение для справки.
Как только это установлено, введите каждый класс, разделенный пробелом в поле, которое появляется во время создания контента.
источник
Если вы редактируете это поле ссылки в своем типе контента (admin / structure / types / manage / your_contenttype / fields / field_c_button_link), есть поле Extra CSS-classes .
Однако введенные здесь классы применяются ко всем ссылкам, созданным с помощью 'field_c_buton_link'. Если вы хотите добавить класс в одном определенном месте, вы можете взглянуть на hook_preprocess_field] или даже theme_link.
Редактировать:
В Drupal 8 также есть поле theme_preprocess_field . Поэтому я думаю, что вы можете сделать что-то вроде этого:
Я не проверял это, поэтому я думаю, что вам нужно внести некоторые коррективы, чтобы сделать эту работу.
источник
Чтобы добавить ответ Тони Фислера выше, в Drupal 8.1.2 мне нужно было проверить #field_name вместо name, чтобы добавить класс. Это то, что работает для меня.
Это если вы хотите класс по
<a>
тегу. Предложенное решение для класса ссылок проще, но когда я попробовал, оно применялось только к классу для оболочки a. Так что, если вы используете Bootstrap, например, модуль класса ссылок не будет работать.источник
if ($element['#field_name'] == 'field_link') { foreach ($variables['items'] as $key => $item){ $variables['items'][$key]['content']['#options']['attributes']['class'][] = 'blarg'; } }
Вы можете использовать класс Link Project, который позволяет добавлять классы в поле Link. Вы должны установить виджет на «Связь с классом». Смотрите скриншот.
источник
Для этого в ветке используется поле шаблона (т.е.
field--field-c-button-link.html.twig
)Обычно шаблон поля будет зацикливаться на вашей ссылке (ях), используя:
Но вы можете изменить это на что-то вроде этого:
работая с заголовком и URL ссылки отдельно.
источник
Легко создать собственный форматер, который переопределяет форматировщик ссылок. Хотя теперь, когда я вижу, что есть модуль для этого ( ссылка ), вы можете использовать его, так как вы можете установить его на уровне поля, а не как параметр в форматере. Но я подумал, что это может быть полезно для кого-то, кто хочет создать свой собственный форматер для ссылки, где вы можете добавить класс.
источник
Я все еще проверяю его на наличие ошибок, но размещение его в вашем файле .theme добавит имя поля в качестве класса для всех полей. Это для Drupal 8.2:
Кажется, что каждая тема должна включать в себя, чтобы сделать стиль проще.
источник
Все остальные решения добавляют классы в оболочку полей. Этот добавляет класс к
<a>
самому тегу:источник
Вот простое решение -
источник