【问题标题】:Add class to content field (link) in drupal在drupal中将类添加到内容字段(链接)
【发布时间】:2015-11-18 16:17:28
【问题描述】:

我想向包含 URL 链接和链接文本(它是“链接”类型的字段)的字段的 <a>-Tag 添加一个类,该字段的名称是 content.field_c_button_link 因此,在我的 HTML 文件中使用树枝时,我想要这样的东西:

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

如何正确添加类?

【问题讨论】:

  • 你应该试试 {{ content.field_c_button_link[0].addClass('button blue') }}

标签: drupal twig field addclass drupal-8


【解决方案1】:

为什么不手动将锚标记拼凑在一起呢?这样你就可以完全控制一切。你的模板中有这样的东西

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

【讨论】:

    【解决方案2】:

    好的,这太可怕了,但这是我发现让它工作的唯一方法:

    如果您查看链接的默认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) 
    

    因此,要直接在&lt;a&gt; 标签上设置类,我们必须使用正确的子数组设置加载“#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' 元素以避免链接打印两次。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      • 2013-10-13
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多