Puncte:1

este posibil să dezactivezi memoria cache pentru un șablon personalizat cu o singură temă?

drapel za

Am un șablon personalizat pentru redarea unui URL medialink dintr-un câmp de referință al entității media de paragraf. În producție cu twig cache activat, modificarea fișierului media atașat nu actualizează conținutul făcând referire la acel media, decât dacă memoria cache de randare este golită.

paragraf--link-media.html.twig

{% set de clase = [
  'paragraf',
  „paragraf-link-media”,
] %}
{% set link_classes = [] %}
{% set aria_label = "" %}
{% set aria_describedby = "" %}
{% if content.field_aria_title|field_value %}
  {% set aria_label = content.field_aria_title|field_value|redare %}
{% endif %}
{% if content.field_link_description|field_value %}
  {% set aria_describedby = "link-description-"~paragraph.id() %}
{% endif %}
{% if content.field_link_style|field_value %}
  {% set link_classes = link_classes|merge(['cta-link']) %}
  {% set classes = classes|merge([content.field_link_style.0["#options"].entity.field_class_name.value]) %}
{% endif %}
{% if content.field_link_extra_styles|field_value %}
  {% pentru extra_style în content.field_link_extra_styles|field_value %}
    {% set classes = classes|merge([extra_style["#opțiuni"].entity.field_class_name.value]) %}
  {% endfor %}
{% endif %}
{% if content.field_link_fa_style|field_value %}
  {% set classes = classes|merge(['link-fa']) %}
{% endif %}
{% bloc paragraf %}
  {% block content %}
    {% if content.field_link_style|field_value %}
      {% if content.field_cta_align|field_value %}
        {% set class_cta_align = content.field_cta_align|field_value %}
      {% altfel %}
        {% set class_cta_align = "cta-center" %}
      {% endif %}
      <div class="{{ class_cta_align }}">
    {% endif %}
    <span{{ attributes.addClass(classes) }}>
      {% set attributes_link = create_attribute() %}
      {% if aria_label != "" și content.field_link_description|field_value și nu content.field_link_style|field_value %}
        {% set attributes_link = attributes_link.setAttribute('aria-label', aria_label).setAttribute('aria-describedby', aria_describedby) %}
      {% elseif content.field_link_description|field_value și nu content.field_link_style|field_value %}
        {% set attributes_link = attributes_link.setAttribute('aria-describedby', aria_describedby) %}
      {% elseif aria_label != "" %}
        {% set attributes_link = attributes_link.setAttribute('aria-label',aria_label) %}
      {% endif %}

      {% if link_media.url|length>0 %}
        <a {{ attributes_link.addClass(link_classes) }} href="{{ link_media.url }}">
      {% endif %}
      {% if content.field_link_fa_style|field_value %}
        {{ content.field_link_fa_style.0["#options"].entity.field_fa_code.value|raw }}
      {% endif %}

Cum pot repara asta?

Auto_reload: true nu pare a fi recomandat în producție și conf. specifică unei teme nu pare a fi posibilă https://www.drupal.org/project/drupal/issues/2002606

sonfd avatar
drapel in
Trebuie să vă asigurați că afișarea paragrafului dvs. are eticheta cache a conținutului media (și/sau a fișierului media), astfel încât memoria cache de randare a acestuia să fie invalidată când media sau fișierul media este actualizat.
Matoeil avatar
drapel za
@sonfd cum faci asta?
Puncte:5
drapel ru

În orice șablon de entitate (cum ar fi node.html.twig sau paragraf.html.creugă, dar nu field.html.twig), tu trebuie sa face {{ continut }} cel puțin o dată, altfel etichetele din cache nu vor apărea. A {{ content.field_something }} nu este de ajuns. Veți observa această problemă de fiecare dată când trebuie să redați o entitate imbricată (de exemplu, o entitate media într-un paragraf sau un nod.)

Dacă designul dvs. nu permite o pătură {{ continut }}, fă ceva de genul {% set dummy_force_cache_bubbling = conținut|redare %}. Acest lucru nu redă nimic vizual, dar declanșează procesarea cache-ului.

Matoeil avatar
drapel za
nu as fi gasit-o fara tine :)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.