Рейтинг:1

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

флаг za

У меня есть собственный шаблон для рендеринга URL-адреса медиа-ссылки из поля ссылки на медиа-объект абзаца. В производстве с активированным кешем ветки изменение прикрепленного файла мультимедиа не обновляет содержимое, ссылающееся на этот медиа, если только кэш рендеринга не очищен.

абзац --link-media.html.twig

{% набор классов = [
  'пункт',
  'параграф-ссылка-медиа',
] %}
{% установить link_classes = [] %}
{% установить aria_label = "" %}
{% set aria_describedby = "" %}
{% если content.field_aria_title|field_value %}
  {% set aria_label = content.field_aria_title|field_value|рендеринг %}
{% конец%}
{% если content.field_link_description|field_value %}
  {% set aria_describedby = "ссылка-описание-"~paragraph.id() %}
{% конец%}
{% если content.field_link_style|field_value %}
  {% set link_classes = link_classes|объединить (['cta-link']) %}
  {% набор классов = классы|объединить([content.field_link_style.0["#options"].entity.field_class_name.value]) %}
{% конец%}
{% если content.field_link_extra_styles|field_value %}
  {% для extra_style в content.field_link_extra_styles|field_value %}
    {% набор классов = классы|объединить([extra_style["#options"].entity.field_class_name.value]) %}
  {% конец для %}
{% конец%}
{% если content.field_link_fa_style|field_value %}
  {% установить классы = классы|слияние (['link-fa']) %}
{% конец%}
{% блокировать абзац%}
  {% заблокировать содержимое %}
    {% если content.field_link_style|field_value %}
      {% если content.field_cta_align|field_value %}
        {% set class_cta_align = content.field_cta_align|field_value %}
      {% еще %}
        {% set class_cta_align = "cta-center" %}
      {% конец%}
      <div class="{{ class_cta_align }}">
    {% конец%}
    <span{{ атрибуты.addClass(классы) }}>
      {% set attribute_link = create_attribute() %}
      {% if aria_label != "" и content.field_link_description|field_value, а не content.field_link_style|field_value %}
        {% set attribute_link = attribute_link.setAttribute('aria-label', aria_label).setAttribute('aria-describedby', aria_describedby) %}
      {% elseif content.field_link_description|field_value, а не content.field_link_style|field_value %}
        {% set attribute_link = attribute_link.setAttribute('aria-describedby', aria_describedby) %}
      {% elseif aria_label != "" %}
        {% set attribute_link = attribute_link.setAttribute ('aria-label', aria_label) %}
      {% конец%}

      {% если link_media.url|длина>0 %}
        <a {{ attribute_link.addClass(link_classes) }} href="{{ link_media.url }}">
      {% конец%}
      {% если content.field_link_fa_style|field_value %}
        {{ content.field_link_fa_style.0["#options"].entity.field_fa_code.value|raw }}
      {% конец%}

Как я могу это исправить?

Auto_reload: true, похоже, не рекомендуется в производстве, и конкретная конфигурация для темы не представляется возможной. https://www.drupal.org/project/drupal/issues/2002606

sonfd avatar
флаг in
Вы должны убедиться, что ваш дисплей абзаца имеет тег кеша мультимедиа (и/или медиафайла), чтобы его кеш рендеринга становился недействительным при обновлении медиафайла или медиафайла.
Matoeil avatar
флаг za
@sonfd как ты это делаешь?
Рейтинг:5
флаг ru

В любом шаблоне объекта (например, узел.html.twig или же параграф.html.twig, но нет поле.html.twig), ты должен оказывать {{ содержание }} хотя бы один раз, иначе теги кеша не всплывут. А {{ content.field_something }} недостаточно. Вы будете замечать эту проблему каждый раз, когда вам нужно отобразить вложенный объект (например, медиа-объект внутри абзаца или узла).

Если ваш дизайн не позволяет одеяло {{ содержание }}, сделать что-то вроде {% set dummy_force_cache_bubbling = содержание|рендеринг %}. Это ничего не отображает визуально, но запускает обработку кеша.

Matoeil avatar
флаг za
без тебя я бы не нашел :)

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

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