Добавить класс в поле содержимого (ссылка) в drupal

Я хочу добавить класс в <a>-тег поля, который состоит из URL-ссылки и текста ссылки (это поле типа «Ссылка»), а имя поля content.field_c_button_link Итак, с веткой в ​​моем HTML- Файл Я хочу иметь что-то вроде этого:

{{ content.field_c_button_link.0.addClass('button blue') }}

Как правильно добавить класс?


person maidi    schedule 18.11.2015    source источник
comment
Вы должны попробовать {{ content.field_c_button_link[0].addClass('button blue') }}   -  person Eyal    schedule 20.11.2015


Ответы (2)


Почему бы не собрать тег привязки вручную? Таким образом, вы имеете полный контроль над всем. Что-то подобное в вашем шаблоне

<a href="{{content.field_url.0['#url']}}" class="custom classes">{{content.field_url.0['#title']}}</a>
person jsheffers    schedule 25.03.2016

Хорошо, это ужасно, но это единственный способ заставить это работать:

Если вы посмотрите на массив сборки drupal по умолчанию для вашей ссылки, вы увидите, что content.field_c_button_link.0 — это массив(4)

'#type' => string(4) "link"
'#title' => string(15) "Big Blue Button"
'#options' => array(0)
'#url' => object Drupal\Core\Url(11) 

Итак, чтобы установить классы непосредственно в теге <a>, мы должны загрузить '#options' (который в настоящее время пуст) с правильной настройкой подмассивов.

'#options' => array(1)
'attributes' => array(1)
'class' => array(2)
string(6) "button"
string(4) "blue"

Единственный способ, которым я смог найти это в twig, - это использовать серию временных файлов и объединить их с исходным массивом, потому что twig не будет анализировать что-либо еще, что я пробовал:

{% set temp = {'attributes': {'class': ['button','blue']}} %}
{% set temp2 = content.field_c_button_link.0 %}
{% set temp2 = temp2|merge({'#options': temp}) %}
{% set temp3 = content.field_c_button_link|without('0')  %}
{% set temp3 = temp3|merge({'0': temp2}) %}
{% set content = content|merge({'field_c_button_link': temp3}) %}

Обратите внимание на |без которого фильтр Drupal/twig. Мне пришлось использовать его, чтобы удалить пустой элемент «0», чтобы ссылка не печаталась дважды.

Подскажите, пожалуйста, есть ли способ проще.

person dan433    schedule 29.02.2016