在drupal中将类添加到内容字段(链接)

时间:2015-11-18 16:17:29

标签: drupal twig field addclass drupal-8

我想在<a> - 一个字段标记中添加一个类,该字段包含一个URL链接和一个链接文本(它是&#39;字段类型&#34;链接&#34;)并且该字段的名称为content.field_c_button_link 因此,在我的HTML文件中使用twig,我希望有类似的东西:

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

如何正确添加课程?

2 个答案:

答案 0 :(得分:4)

为什么不手动将锚标签拼凑在一起?这样你就可以完全控制一切。您的模板中有类似的内容

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

答案 1 :(得分:0)

好的,这太可怕了,但这是我找到的唯一方法:

如果查看链接的默认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中我能找到的唯一方法是使用一系列temps并将它们与原始数组合并,因为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'元素,以避免链接打印两次。

请告诉我有一种更简单的方法。