logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

9.10.2. Drupal Fields API. Field Formatter: prikaz podataka polja na stranici

27/05/2025, by Ivan

Menu

U ovom članku razmotrićemo Field Formatter-e, koji nam omogućavaju da uređujemo prikaz polja i prikazujemo ih na stranici.

U prethodnim člancima smo kreirali tip polja Link, u ovom članku ćemo pogledati kako se ta polja prikazuju na stranici i koja klasa je za to odgovorna. Svako polje koje dodate putem Drupala može se prikazati na stranici i uređivati njegova podešavanja na stranici Manage display.

upravljanje prikazom

U koloni Format možete izabrati kako će se polje prikazivati. Ova kolona je formirana zahvaljujući klasama Field Formatter. Pogledajmo klasu iz modula Link, koja prikazuje link na stranicu:

core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php

Annotacija klase pokazuje kom tipu polja ovaj formatter pripada.

/**
 * Plugin implementation of the 'link' formatter.
 *
 * @FieldFormatter(
 *   id = "link",
 *   label = @Translation("Link"),
 *   field_types = {
 *     "link"
 *   }
 * )
 */

U ovom fajlu nas pre svega zanima metoda viewElements(), koja je odgovorna za ispis podataka na stranici. Obratite pažnju da formatter ne šalje zahteve bazi podataka, on uzima podatke iz promenljive $items. Renderovani podaci iz entiteta se prosleđuju u $items. Tako imamo podelu odgovornosti klasa za unos podataka Field Widget, skladištenje podataka Field Storage i prikaz podataka Field Formatter. Ovo je veoma zgodno jer možete keširati podatke na različitim nivoima. Na primer, ako se promeni prikaz ili podešavanja Field Formatter-a, nema potrebe da se briše keš čvorova jer se podaci ne menjaju, već samo njihov prikaz. Takođe je zgodno za dodavanje i menjanje funkcionalnosti. Ako je potrebno samo promeniti prikaz, dodate novi Field Formatter za određeni tip polja i napišete svoj prikaz.

Klasa LinkFormatter ima i metodu settingsForm(), koja je odgovorna za konfiguraciju formatter-a na stranici Manage display. Kroz Form API možete dodati polja za podešavanje formatter-a, koja će biti sačuvana u konfiguraciji.

Modul Link ima još jedan formatter:

core/modules/link/src/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php

On nasleđuje običan LinkFormatter, ali sa jednom razlikom - povezan je poseban template za ovaj formatter:

core/modules/link/templates/link-formatter-link-separate.html.twig

Na taj način, HTML za prikaz polja se dobija prolaskom kroz template. Formatter samo formira polje $element, gde se kroz $delta upisuju podaci za svaku vrednost višestrukog polja.

Kao što vidite, Field API je prilično jednostavan i zgodan za korišćenje. U sledećem članku ćemo napisati sopstveni tip polja sa Storage, Widget i Formatter.