Puncte:2

Cum obțineți modul de vizualizare\third_party_settings al unui câmp din hook_preprocess_image_formatter(&$variables)

drapel br

Sunt pe D9.

Am adăugat o opțiune personalizată la formatatorul de câmpuri de imagine care urmează Ghidurile Drupal

În preprocesul câmpului pot obține setările pe care le-am creat:

function my_module_preprocess_field(&$variabile) {
  if ($variabile["element"]["#formatter"] === 'imagine') {
    $entity = $variables['element']['#object'];
    $view_mode = $variables['element']['#view_mode'];
    $field_name = $variables['element']['#field_name'];

    $entity_display = EntityViewDisplay::collectRenderDisplay($entity, $view_mode);
    $field_display = $entity_display->getComponent($field_name);

    $variables['my_settings'] = isset($field_display["third_party_settings"]["my_module"]["my_settings"]) && $field_display["third_party_settings"]["my_module"]["my_settings"];
  }
}

Însă field.html.twig fișierul nu este bun pentru nevoia mea: trebuie să trec aceste setări la image-formatter.html.twig fișier, pentru că trebuie să plasez un div imediat după img etichetă și nu în afara A.

Din păcate, nu pot obține aceste informații în preprocesul formatatorului de imagini, deoarece nu găsesc o modalitate de a obține modul de vizualizare:

funcția my_module_preprocess_image_formatter(&$variabile) {
  $articol = $variabile['articol'];
  $entity = $item->getEntity();
  $câmp = $item->getFieldDefinition();

  // cum să obțineți modul de vizualizare\setările_terțelor_părți?
  $entity_display = EntityViewDisplay::collectRenderDisplay($entity, $missing_view_mode);
}

Este posibil?

EDITAȚI | ×:

Mulțumesc răspuns 4k4, ce am făcut:

  1. Adăugat în cadrul funcției câmp de preprocesare:
    dacă (!gol ($variabile['articole'])) {
      foreach ($variabile['articole'] ca &$articol) {
        $item['conținut']['#item_attributes']['my_settings'] = $my_settings;
      }
    }

Și apoi a adăugat un funcția de preprocesare a imaginii pentru a avea acea informație ca variabilă și nu ca atribut - mai mult o preferință decât o strictă necesitate.

funcția my_module_preprocess_image(&$variabile) {
  $variables['my_settings'] = $variables["atribute"]["my_settings"] ?? FALS;
  unset($variabile["atribute"]["setarile_mea"]);
}
leymannx avatar
drapel ne
Drupal 7, dar poate fi încă relevant: https://drupal.stackexchange.com/a/39508/15055
Puncte:2
drapel cn

Aș adăuga modul de vizualizare sau setarea terță parte la atributele imaginii. Apoi este disponibil în ambele șabloane imbricate, format_imagine și imagine. Îl puteți elimina după ce l-ați stocat într-o variabilă locală, dacă nu doriți ca atributul să fie redat. Dar, în mod normal, nimănui nu-i pasă de un atribut suplimentar.

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.