Articles

Za razliku od Drupala 7, kreiranje više instanci bloka za postavljanje na vaš sajt je jednostavan zadatak u Drupal 8.
U ovom vodiču naučićete kako programski dodati blok u interfejs rasporeda blokova. Kako dodati (administrativnu) konfiguracionu formu u blok i kako je obraditi. Na kraju, naučićete kako dodati i prikazati podrazumevane vrednosti konfiguracije za formu.
Pre nego što započnete ovaj vodič korak po korak, pripremite skelet modula u skladu sa uputstvom „Pripremite skelet modula“.


Blokovi u Drupal 8 su instance blok plugina.
Menadžer blokova u Drupalu skenira vaše module tražeći klase koje sadrže @Block anotaciju.
Primer koda ispod koristi @Block anotaciju zajedno sa svojstvima „id“ i „admin_label“ za definisanje prilagođenog bloka.
Kreirajte fajl src/Plugin/Block/HelloBlock.php u strukturi modula koju ste ranije napravili i dodajte sledeći kod.


Sada recimo da želimo da dodamo mogućnost graditelju sajta da unese deo konfiguracije za svaki primerak našeg prilagođenog bloka. Uvek imajte na umu da se sve konfiguracije za gradnju sajta u Drupal 8 mogu eksportovati sa razvojne lokacije i importovati na produkcioni sajt (poznato kao Upravljanje konfiguracijom). Vi, kao sastavljač modula, takođe možete obezbediti podrazumevanu konfiguraciju za automatsko popunjavanje forme kada kreator sajta kreira novi blok.


Dodajte sledeći metod u klasu HelloBlock. U ovom primeru on se nalazi u fajlu src/Plugin/Block/HelloBlock.php, ali kako počinjete da razmišljate u više OOP režimu, gde se fizički nalazi u strukturi fajlova je manje važno nego u prostoru imena. Ako ste vrlo pametan OO programer, držite ove dve stvari veoma usklađene. Ali za svaki slučaj, ovo je zapravo prostor imena, veoma sličan imenu fascikle modula i imenu mašine za našu prethodnu diskusiju o modulu u ovom poglavlju, što će biti važno kasnije kada budete želeli programski da komunicirate sa kodom vašeg modula.


Da bismo koristili konfiguraciju instanci bloka, možemo izmeniti metod build() klase HelloBlock:
/** * {@inheritdoc} */ public function build() { $config = $this->getConfiguration(); if (!empty($config['hello_block_name'])) { $name = $config['hello_block_name']; } else { $name = $this->t('to no one'); } return [ '#markup' => $this->t('Hello @name!', [ '@name' => $name, ]), ]; }


Deo V iz Praktičnog vodiča za kreiranje osnovnih Drupal 8 modula
Od .info do testova, samo osnove
Setite se, na početku ovog časa sam rekao da ćemo definisati blok sa formom? Pa, sada je pravo vreme da to razjasnimo.


Ovaj vodič uključuje uputstva za kreiranje sopstvenog tipa polja, vidžeta i formattera u Drupal 8.


Ovaj tutorijal je prvobitno objavljen na Web Wash. Međutim, Berdir je pitao mogu li da postavim tutorijal ovde, pa je sada ovde.
Modul za Drupal 7 omogućava skladištenje primera koda/fragmenata u polju. Dolazi sa prilagođenim poljem pod nazivom „Field Snippets“ koje prikazuje tri elementa forme: opis, izvorni kod i režim isticanja sintakse (koji programski jezik).
Ali sada je vreme da se modul ažurira za Drupal 8.


U Drupalu 8, svi tipovi polja, vidžeti i formaterski plugini su plugini.
Oni se automatski otkrivaju ako su postavljeni u očekivanu strukturu direktorijuma i koriste odgovarajuću anotaciju.
Struktura direktorijuma za modul koji implementira sva tri izgleda ovako:
foo_bar_fields


Tipovi polja definišu svojstva i ponašanje polja. Tipovi polja definišu se kao plugini, zato se preporučuje da proučite Plugin API pre nego što počnete sa pisanjem novog tipa polja.
Da biste napravili tip polja u Drupalu 8, potreban vam je klasa sa anotacijom FieldType.
Lokacija klase tipa polja treba da bude u MODULE_NAME/src/Plugin/Field/FieldType
/modules/foo/src/Plugin/Field/FieldType/BazItem.php
