Puncte:0

Accesați (nicio legătură) entități din interiorul twig fără preprocesare

drapel in

În cadrul unui șablon Twig de noduri, pot accesa de ex. câmpuri de referință cu...

{{ node.field_my_entity_reference.0.entity.field_my_field.0.value }}

Cu ajutorul Twig Tweak Pot reda câmpuri de la anumite noduri făcând referire la NID-ul lor (aici NID 1)...

{{ drupal_field('field_my_field', 'node', 1) }}

Acum este posibil să accesați direct câmpurile anumitor noduri prin NID-ul lor, nu doar obținerea conținutului randat, fie printr-un mod pe care Drupal îl oferă deja, fie cu ajutorul unui modul precum Twig Tweak? Știu că acest lucru este posibil prin preprocesare, dar caut o modalitate de a face acest lucru direct în Twig.

Puncte:1
drapel ve

Drupal twig vă împiedică să utilizați câteva funcții, dar puteți adăuga funcționalități personalizate printr-o extensie personalizată, să spunem get_any_node_field_value

în crenguță:

<div>
  {{get_any_node_field_value(nodeId, 'field_my_custom_name')}}
</div>

Acest articol pare să ofere o introducere bună în configurarea unei extensii de crenguță personalizată. Pe scurt:

web/modules/custom/your_module/src/Extension/TwigExtension.php:

<?php

spațiu de nume Drupal\modulul_dvs.\Extensie;

utilizați Twig\Extension\AbstractExtension;
utilizați Twig\TwigFunction;

clasa TwigExtension extinde AbstractExtension {

  funcția publică getFunctions(): matrice {
    întoarcere [
      TwigFunction new('get_any_node_field_value', [$this, 'get_any_node_field_value']),
    ];


    funcția publică get_any_node_field_value ($nodeId, $fieldName) {
      // logica ta merge aici  
    }

}

Vă rugăm să rețineți că acest lucru nu afectează setările dvs. de cache, așa că nu veți primi actualizări automate ale șablonului, dacă nodul X care nu are legătură s-a schimbat. În funcție de cazul dvs. de utilizare, aceasta ar putea să nu fie o problemă, dar s-ar putea să vă cadă mai târziu. Dacă trebuie să vă pese de stocarea în cache, este mai bine să treceți prin preprocesare și să extindeți și etichetele cache.

drapel ru
Pariez cu 10 dolari asta **va** să îți cadă pe picioare mai târziu :-)
drapel ve
Depinde de cazul de utilizare aș spune - dar sunt de acord: cu siguranță are potențialul de a face acest lucru ;-)
4uk4 avatar
drapel cn
Nu este nicio problemă să scrieți funcții Twig cu metadate din cache sau atașamente. Spune-le doar. Este același pentru tot conținutul imbricat, indiferent dacă într-o funcție Twig sau nu. Toate rulează în același context de randare.

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.