Рейтинг:0

Блок расширения, блок с полем абзаца и 3 поля абзаца... как перебрать абзацы из расширения блока

флаг cn

Вот что у меня есть:

У меня есть три файла ветки:

  1. block--paragraph-images.html.twig (который расширяет block.html.twig)
  2. field--field-paragraph-image-block.html.twig (поле абзаца, которое находится в пользовательском типе блока, block--paragraph-images.html.twig.)
  3. paragraph--field-paragraph-image.html.twig (который содержит три поля: field_paragraph_image, field_paragraph_title и field_paragraph_text).

Я могу получить доступ к отдельным полям в абзаце --field-paragraph-image.html.twig из блока --paragraph-images.html.twig, но он показывает только первую запись. Мне нужно перебрать поля абзаца в поле --field-paragraph-image-block.html.twig. Я пытаюсь выполнить все из блока --paragraph-images.html.twig, чтобы сделать файлы более управляемыми. Это выполнимо?

То, что у меня есть ниже, показывает только первый индекс в массиве. Если я раскомментирую оператор цикла, он покажет около 12 для каждого первого индекса в массиве. Мне нужно, чтобы индекс каждого абзаца отображался только один раз в сетке.

0, изображение, заголовок, текст

1, изображение, заголовок, текст

2, изображение, заголовок, текст

Любая помощь и направление приветствуются.

{% заблокировать содержимое %}

    {# поля блока #}
    {% set paragraph_count = content.field_paragraph_image_block['#items']|длина %}
    {% установить параграф_count_css = 'столбцов сетки-' ~ параграф_счет %}

    {# поля абзаца #}
    {% set paragraph_title = content.field_paragraph_image_block.0["#paragraph"].field_paragraph_title.value %}
    {% set paragraph_text = content.field_paragraph_image_block.0["#paragraph"].field_paragraph_text.value %}
    {% set media_id = content.field_paragraph_image_block.0["#paragraph"].field_paragraph_image.target_id %}
    
    <div class="block__content image-paragraph mb-0 grid gap-4 {{paragraph_count_css }} " >
        {% установить параграф_классы = [
            'абзац-изображение-эффект',
            'количество изображений-' ~ абзац_счетчик,
        ] | сортировать | присоединиться (' ') | подрезать %}

       {# {% для элемента в content.field_paragraph_image_block %} #}
            <div класс="{{ параграф_классы }}">
                    {{ drupal_entity('медиа', media_id) }}
                    {{ название_абзаца }}
                    {{текст_абзаца}}
            </div>
       {# {% конец для %} #}
    </div>

{% конечный блок%}
Рейтинг:1
флаг cn

Нашел решение этой проблемы. Ты может иметь только один файл ветки, файл ветки пользовательского блока и получать доступ к полям внутри абзацев.

Переместите переменные абзаца внутрь цикла for и замените переменные следующим образом:

старый код

["#абзац"].field_paragraph_title.value

новый код

item.entity.field_paragraph_title.value

и замените цикл for следующим образом:

старый код

{% для элемента в content.field_paragraph_image_block %}

новый код

{% для элемента в content.field_paragraph_image_block['#items'] %}

Вот новый код в block--paragraph-images.html.twig, другие ветки не нужны:

{% заблокировать содержимое %}
    {# поля блока #}
    {% set paragraph_count = content.field_paragraph_image_block['#items']|длина %}
    {% установить параграф_count_css = 'столбцов сетки-' ~ параграф_счет %}

   <div class="block__content image-paragraph mb-0 grid gap-4 {{paragraph_count_css }} " >

    {% для элемента в content.field_paragraph_image_block['#items'] %}

        {# поля абзаца #}  
        {% set paragraph_title = item.entity.field_paragraph_title.value %}
        {% установить paragraph_text = item.entity.field_paragraph_text.value %}
        {% set media_id = item.entity.field_paragraph_image.target_id %}

        {% установить параграф_классы = [
            'абзац-изображение-эффект',
            'количество изображений-' ~ абзац_счетчик,
        ] | сортировать | присоединиться (' ') | подрезать %}

            <div класс="{{ параграф_классы }}">
               {{ drupal_entity('медиа', media_id, 'original_size') }}
               {{ название_абзаца }}
               {{текст_абзаца}}
            </div>
     {% конец для %}
    </div>
{% конечный блок%}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.