2016-10-20 10 views
3

Это моя настройка. У меня есть пользовательский блок типа, который имеет ссылочный объект . Он ссылается на тип контента «Продукты». Тип контента Products имеет поле ссылочного объекта для словаря таксономии «Серия».Drupal 8 получение значения поля объекта ссылки в его родительском элементе в ветке

Серия таксономии содержит поле, в котором мне нужно получить значение в теме поля продукта пользовательского блока. У меня в основном есть блок из 5 продуктов, каждый из которых относится к серии. В моей теме мне нужно применить значение поля серии для каждого продукта.

Есть ли способ получить это значение строго от ветки? Я попробовал бесчисленные комбинации, чтобы попытаться добраться до него.

У меня есть мой блок - пакет - 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> 

Затем, который идет в моем поле - поле-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> 

ответ

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 
+0

Спасибо! Второй метод помог мне в том, что мне нужно. – SkankHunt42

 Смежные вопросы

  • Нет связанных вопросов^_^