Drupal 8在twig

时间:2016-10-20 23:36:26

标签: drupal-theming drupal-8

这是我的设置。我有自定义块类型,其中包含引用实体字段。它引用了“产品”的内容类型。产品内容类型具有“系列”的分类词汇的参考实体字段。

系列分类包含一个字段,我需要在自定义块的产品字段主题中获取值。我基本上有5个产品块,每个产品属于一个系列。在我的主题中,我需要为每个产品应用一个系列字段值。

有没有办法严格从树枝上获得这个值?我已经尝试了无数的组合链试图达到它。

我有我的block - bundle - product_series_block.html.twig文件,它围绕着这些产品。

<div {{ attributes.addClass(classes) }}
     data-ng-controller="ProductsController as vm">
  <div class="container">
    {{ title_prefix }}
    {% if label %}
      <h2{{ title_attributes }}>{{ label }}</h2>
    {% endif %}
    {{ title_suffix }}
    <div class="product-holder">
      {% block content %}
        {{ content }}
      {% endblock %}
    </div>
  </div>
</div>

然后进入我的领域 - field-products.html.twig,我想在数据系列html属性中使用该系列。

<div{{ attributes.addClass(classes, 'field__items') }} data-series="{{ cant_figure_this_out }}">
  {% for item in items %}
    <div{{ item.attributes.addClass('field__item item') }}>{{ item.content }}</div>
  {% endfor %}
</div>

1 个答案:

答案 0 :(得分:2)

1 /您可以在节点模板级别获取它,如下所示:

node.field_serie.0.get('entity').getTarget().getValue().getName()

如果你想把它作为一个数组......:

{% set series = [] %}
{% for key, item in node.field_serie %}
  {% set series = series|merge( [item.get('entity').getTarget().getValue().getName()] )  %}
{% endfor %}

2 /您也可以在字段模板级别获取

{% set series = [] %}
{% for key, item in item['content']['#node'].field_serie %}
  {% set series = series|merge( [item.get('entity').getTarget().getValue().getName()] )  %}
{% endfor %}

3 /然后你可以使用类似的东西(这可能需要更多的工作):

attributes.setAttribute('data-series', series|join(',')|escape