Puncte:0

Schimbați în mod programatic modul de vizualizare al câmpului media

drapel cn

Încerc să schimb modul de vizualizare a unui câmp media în mod programatic. Am creat un mod de vizualizare numit „modal”. Am creat un cârlig mytheme_preprocess_media și am încercat să schimb modul de vizualizare în diverse moduri, cum ar fi

mytheme_preprocess_media(&$variabile) {
    $variables['view_mode'] = 'modal';
    $variables['elements']['#view_mode'] = 'modal';
    $variables['content']['field_media_oembed_video']['#view_mode'] = 'modal';
}

dar nici unul nu pare să funcționeze. Folosind xdebug, știu sigur că acest cârlig este lovit, dar din anumite motive folosește întotdeauna modul de vizualizare implicit.

Cum pot schimba în mod programatic modul de vizualizare al unui câmp media?

sonfd avatar
drapel in
Ați încercat [hook_entity_view_mode_alter()](https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21entity.api.php/function/hook_entity_view_mode_alter/9.3.x)?
Matt avatar
drapel cn
@sonfd am, dar acel cârlig nu este declanșat de câmpul meu media.
4uk4 avatar
drapel cn
Câmpurile nu au moduri de vizualizare, entitățile redate au. Valorile afișate în întrebare sunt doar ca informații, nu le puteți modifica. Dacă, totuși, câmpul redă entități de referință, puteți încerca să schimbați modul de vizualizare al acestora, dacă le găsiți în câmpul delte. Dar acest lucru depinde de modul în care este configurat câmpul și, de asemenea, trebuie să schimbați cheile cache-ului.
4uk4 avatar
drapel cn
OK, tocmai am verificat numele câmpului și am aflat că este un câmp preinstalat de bază și că tipul câmpului nu este un câmp de referință. Cred că ești complet pierdut și trebuie să începi cu un nivel mai sus în nod (dacă media este un tip de conținut).
Matt avatar
drapel cn
@4uk4 ceea ce mă încurcă este dacă câmpul nu acceptă moduri de vizualizare, de ce îmi permite să adaug moduri de vizualizare în interfața de administrare? De asemenea, media nu este o entitate? Este ceva la care pot adăuga câmpuri.
4uk4 avatar
drapel cn
Da, puteți adăuga câmpuri la o entitate media și câmpul din exemplul de cod este, de asemenea, un astfel de câmp. Ceea ce este confuz în întrebare este ce înțelegeți prin câmp media, un câmp ca acesta pe care îl puteți accesa în cârligul codului exemplu sau un câmp dintr-o entitate diferită care are nevoie de un cârlig diferit?
Matt avatar
drapel cn
În wysiwyg-ul meu, încorporez entități media. Când încorporez o entitate media, vreau să pot schimba modul de vizualizare care este utilizat.
Puncte:2
drapel cn

În wysiwyg-ul meu, încorporez entități media. Când încorporez o entitate media, vreau să pot schimba modul de vizualizare care este utilizat.

Când încorporați o entitate media în WYSIWYG, puteți selecta un mod de vizualizare.Dacă doriți să schimbați acest lucru mai târziu în mod programatic, trebuie să schimbați în <drupal-media> etichetați atributul modul de vizualizare a datelor. Dacă nu ați specificat un mod de vizualizare, acest atribut lipsește și trebuie să îl adăugați.

Dacă doriți să utilizați un cârlig de preprocesare a temei, atunci utilizați cel al șablonului care conține câmpul WYSIWYG, nu cel al șablonului media. Căutați câmpul WYSIWYG în $variables['conținut'] și schimbați sursa HTML pe care o găsiți '#text'.

sonfd avatar
drapel in
În setările de format text, de ex./admin/config/content/formats/manage/full_html (Configurare > Crearea conținutului > Formate de text și editoare > [Format]), ar trebui să vedeți o filă în partea de jos intitulată „Încorporați media” unde puteți configura ce pachete media pot fi încorporate , ce moduri de vizualizare sunt permise și care mod de vizualizare este implicit.

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.