Доступ к ссылочному/родительскому элементу в ветке (абзацы)

У меня есть поле ссылки на объект внутри (родительского) абзаца, который ссылается на несколько дочерних абзацев.

Можно ли получить доступ к значениям полей ссылочного абзаца в шаблонах веток дочерних (ссылочных абзацев)?

На самом деле я просто пытаюсь подсчитать общее количество элементов, на которые есть ссылки, в одном из шаблонов ветки элемента, на которые есть ссылки. Поэтому я хочу посчитать его братьев и сестер + 1, если хотите.

Мне известно, что я мог бы предварительно обработать это в модуле, но я хотел бы знать, возможно ли это в twig.


person c1u31355    schedule 13.09.2018    source источник
comment
Документация Twig великолепна, вы видели ее?   -  person Alex Borsody    schedule 13.09.2018
comment
что ты уже испробовал?   -  person DarkBee    schedule 14.09.2018
comment
Я думаю, что это не совсем связано с Twig, поскольку существующие переменные в каждом шаблоне специфичны для Drupal или модуля, не так ли? Также я не понимаю, что я пробовал до сих пор, так как я только спрашиваю, есть ли доступная переменная (в шаблонах ссылочных объектов), которая содержит поля ссылочных объектов или что-то в этом роде.   -  person c1u31355    schedule 14.09.2018
comment
paragraph.field_paragraph_reference.getvalue|length дает мне количество в ссылочном элементе, но я должен как бы передать его, чтобы он был доступен в абзацах, на которые ссылаются. Я обнаружил, что этот вопрос связан (drupal.stackexchange.com/questions/242601/), но предложенное решение никак не работает, пожалуйста, исправьте меня, если я ошибаюсь.   -  person c1u31355    schedule 14.09.2018


Ответы (2)


В ветке:

{% set paragraph_parent = paragraph.getParentEntity() %}
{% set width = paragraph_parent.field_width.0.value %}

<div class="{{ width }}">{{ content.field_images }}</div>
person Stef Van Looveren    schedule 08.11.2019

Поскольку на этот вопрос нет ответа, я должен предположить, что это невозможно в Twig, но хотел быстро поделиться упомянутым обходным путем через модуль...

getParentEntity()

твой друг.

Краткий пример того, как сделать доступным счетчик ссылочного элемента...

/* implements hook_preprocess_paragraph() (paragraph type product_teaser) */
function mymodule_preprocess_paragraph__product_teaser(&$variables) {

  /* makes paragraph siblings count (+ 1/self) available to template */
  $siblings_total = 1;      

  $paragraph = $variables['paragraph'];
  $parent_paragraph = $paragraph->getParentEntity();  

  if ( ( isset($parent_paragraph) ) && ( $parent_paragraph->hasField('field_paragraph_reference') ) ) {

    $field_content = $parent_paragraph->get('field_paragraph_reference')->getValue();

    if ( isset($field_content[0]['target_id']) ) {
      $siblings_total = count($field_content);
    }

  }

  $variables['mymodule_theming_sources']['siblings_total'] = $siblings_total;

}
person c1u31355    schedule 15.09.2018
comment
Тем не менее, вы можете добавить этот код как функцию twig или отфильтровать, чтобы получить к нему доступ внутри шаблона. - person DarkBee; 16.09.2018
comment
Эта функция предназначена для того, чтобы сделать переменную доступной для шаблона ветки определенного типа абзаца. Звоните через {{ mymodule_theming_sources.siblings_total }}. Мой первоначальный вопрос заключался в том, доступны ли данные в Twig. - person c1u31355; 16.09.2018
comment
Вместо жесткого кодирования field_paragraph_reference вы можете использовать $parent_field_name = $paragraph->get('parent_field_name')->value; - person LarS; 15.10.2018