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

Obavestite Drupal 8 o vašem modulu pomoću .info.yml fajla

20/06/2025, by Ivan

Osnovna tema: metapodaci projekta

Fajl .info.yml (takođe poznat kao „info yaml fajl“) je važan deo modula, teme ili instalacionog profila Drupal 8 za čuvanje metapodataka o projektu.

Ovi .info.yml fajlovi su neophodni za:

  • Obavestite Drupal o postojanju modula, teme ili instalacionog profila.
  • Razlikovanje teme, modula po tipu.
  • Obezbedite informacije za stranice administracije Drupal Web UI.
  • Navedite kriterijume za upravljanje aktivacijom i deaktivacijom modula i kompatibilnošću sa verzijom Drupala.
  • Opšte administrativne svrhe u drugim kontekstima.

 

Za dodatne informacije pogledajte najnoviji API o InfoParserInterface.php. (Kliknite na Pregled izvora.)

Hello World

Ispod je fajl hello_world.info.yml koji ćemo koristiti. Ako pratite dalje, napravite novi fajl hello_world.info.yml u glavnom direktorijumu vašeg modula i nalepite u njega ovaj kod.

name: Hello World Module
description: Creates a page showing "Hello World".
package: Custom

type: module
core: 8.x

Hajde da pogledamo svaku liniju da vidimo šta radi.

Prve tri linije se uglavnom koriste u korisničkom interfejsu administratora, kada korisnici mogu da uključe ili isključe vaš modul. Ključevi name i description daju tekst koji se prikazuje na stranici administracije modula, a ključ package omogućava grupisanje sličnih modula zajedno. Na primer, Core koristi package: Core da grupiše sve module koji dolaze sa Drupal 8, a vi možete koristiti package: Custom da grupišete sve svoje sopstvene module, što olakšava njihovo pronalaženje i uključivanje.

Ključ type, koji je nov u Drupalu 8, pokazuje tip ekstenzije, na primer modul, tema ili profil.

Za module koji se nalaze na drupal.org, verzija će biti popunjena skriptom za pakovanje. Ne treba da je navodite ručno, već potpuno izostavite liniju verzije.

Ključ core označava sa kojom verzijom Drupal jezgra je vaš modul kompatibilan.

name, type i core su obavezni ključevi.

Navođenje core_version_requirement
Upozorenje
Trenutno DrupalCI ne podržava testne zakrpe koje menjaju core_version_requirement.

Da li vam treba core_version_requirement?

Kada se definišu ograničenja osnovne verzije, koristi se sledeći redosled prioriteta.

  • Ako je osnovni zahtev naveden u composer.json, on ima najveći prioritet.
  • Ako u composer.json nema zahteva za kernel, core_version_requirement u info.yml ima prioritet nad sledećim.
  • Ako core_version_requirement nije postavljen u info.yml, koristiće se bilo koja verzija navedena u osnovnom modulu u sekciji zavisnosti info.yml.

 

Navođenje core_version_requirement ako je potrebno

Novi ključ core_version_requirement u fajlovima *.info.yml za module, teme i profile sada podržava semantičko verzionisanje implementirano u Composer projektu. Ovo omogućava modulima, temama i profilima da takođe navode da su kompatibilni sa više glavnih verzija Drupal jezgra.

Na primer, modul kompatibilan sa Drupal 8 i Drupal 9 može imati info.yml fajl kao ovaj:

name: My Module
type: module
core: 8.x
core_version_requirement: ^8 || ^9

Ovo označava da je modul kompatibilan sa svim verzijama Drupal 8 i 9. Core: je ovde potreban jer verzije Drupal jezgra pre 8.7.7 ne prepoznaju ključ core_version_requirement.

Međutim, većina modula će morati da ukloni zastareli kod da bi bila kompatibilna sa Drupal 9. Zato neće moći da budu kompatibilni sa svim verzijama Drupal 8.

Na primer, modul kompatibilan sa verzijama Drupal 8 posle 8.8.0, kao i Drupal 9, treba da ima info.yml fajl kao:

name: My Module
type: module
core_version_requirement: ^8.8 || ^9

Core: ključ ne treba koristiti ovde da bi se osiguralo da verzije Drupala pre 8.7.7 neće instalirati modul. Dodavanje i core i core_version_requirement sa bilo čim osim core_version_requirement: ^8 || ^9 izazvaće izuzetak.

Core_version_requirement ne može da se koristi za ograničavanje verzije kernela pre 8.7.7. Na primer, core_version_requirement: ^8.7 || ^9 izazvaće grešku pri parsiranju: to nije dozvoljeno jer ^8.7 uključuje verzije kao što je 8.7.0 koje ne prepoznaju ključ core_version_requirement.

Važno je da prilikom korišćenja novog ključa core_version_requirement sa bilo čim osim core_version_requirement: ^8 || ^9, modul bude testiran na Drupal 8.7.7 ili novijem.

Potpuni primer

Pored osnovnih svojstava prikazanih u prethodnom primeru, postoje i dodatna svojstva. Ovo je potpuni primer.


name: Hello World Module
description: Creates a page showing "Hello World".
package: Custom

type: module
core: 8.x

dependencies:
  - drupal:link
  - drupal:views
  - paragraphs:paragraphs
  - webform:webform (>=8.x-5.x)

test_dependencies:
 - drupal:image

configure: hello_world.settings

php: 5.6

hidden: true
required: true

# Napomena: ne dodajte sami svojstva 'version' ili 'project'.
# Oni će biti automatski dodati od strane pakera na drupal.org.
# version: 1.0
# project: 'hello_world'
  • dependencies: lista drugih modula od kojih vaš modul zavisi. Zavisnosti od Drupal jezgra ili contrib modula moraju biti u formatu {project}:{module}, gde je {project} ime projekta kako je prikazano u URL-u Drupal.org (npr. drupal.org/project/views), a {module} je mašinsko ime modula. Zavisnosti mogu uključivati i verzijske uslove, npr. webform:webform (>=8.x-5.x). Obratite pažnju da ako vaš modul ima zavisnosti od drugih modula ili biblioteka, one moraju biti deklarisane u composer.json fajlu modula. Ako imate lokalne prilagođene module koji zavise jedni od drugih, možete koristiti {module}:{module} (ili {module}:{submodule} za podmodule).
  • test_dependencies: lista drugih modula (u istom formatu kao dependencies) potrebnih za izvođenje određenih automatizovanih testova vašeg modula na DrupalCI, ali nisu potrebni kao zavisnosti modula u celini (ili su u razvoju kao zavisnosti modula, ali još nisu završeni). Obratite pažnju da morate da snimite promenu test_dependencies u svom Git repozitorijumu pre nego što pokušate da pokrenete test koji od nje zavisi – ne možete samo staviti promenu u info.yml u isti patch kao i novi test. Alternativno, možete koristiti Composer za upravljanje test zavisnostima – pogledajte odgovarajuću dokumentaciju za više informacija.
  • configure: ako vaš modul nudi konfiguracioni formular, možete navesti njegovu rutu ovde. On će se tada pojaviti kao link na stranici „Ekstenzije“ (/admin/modules), kada korisnik proširi detalje.
  • php: 5.6: definiše minimalnu verziju PHP koja je potrebna za vaš modul. Korisnici neće moći da uključe modul ako koriste stariju verziju PHP-a. Ovo se koristi da se izbegnu greške ako modul koristi novije funkcije koje nisu bile dostupne u ranijim verzijama PHP-a.
  • hidden: true: sakriva vaš modul sa liste modula na stranici Ekstenzije. Može biti korisno da sakrijete modul ako sadrži samo testove ili je namenjen kao primer za programere koji treba da implementiraju API osnovnog modula. Možete učiniti te module vidljivim dodavanjem $settings['extension_discovery_scan_tests'] = TRUE u vaš settings.php fajl.
  • required: true: znači da modul mora biti uključen i ne može se ukloniti.
  • Ograničena svojstva koja dodaje Drupal sistem pakovanja. Nemojte ih ručno dodavati u info.yml u vašem repozitorijumu: version i project

 

Debugovanje .info.yml fajlova

Modul se ne pojavljuje na stranici admin/modules

  • Proverite da li info fajl ima ime {machine_name}.info.yml i da se nalazi u korenu foldera modula.
  • Proverite da li je fajl pravilno formatiran. Na primer, ne sme biti razmaka pre, ali mora biti razmak posle dvotačke (:). Formatiranje treba da izgleda kao u sledećem primeru.
  • Proverite da li fajl ima sledeću liniju:
type: module
  • Proverite da li ime modula počinje slovom ili donjom crtom. Sledeći citat iz PHP dokumentacije opisuje validna imena funkcija.

 

Imena funkcija slede ista pravila kao i ostali PHP identifikatori. Važeće ime funkcije počinje slovom ili donjom crtom, nakon čega slede bilo koji broj slova, cifara ili donjih crta. Kao regularni izraz, ovo se izražava kao: [a-zA-Z_ \x7f-\xff][a-zA-Z0-9_ \x7f-\xff]*.

Modul je naveden u admin/modules, ali njegov checkbox je isključen.

  • Proverite da je kompatibilnost jezgra podešena na 8.x
core: 8.x
  • Proverite da li su sve zavisnosti modula dostupne. Možete proširiti informacije o modulu da vidite koji zahtevi nedostaju.

expand_requirements

Napomena da su neki moduli premešteni iz Drupal 8 jezgra, dok su drugi dodatni moduli premešteni u jezgro ili zamenjeni novim modulima jezgra.

Opis modula je prazan

Zapamtite da se vrednost description koristi za opis.

description: Example Module description.

Dodavanje composer.json fajla

Pored deklarisanja zavisnosti od drugih modula u .info.yml fajlu, ako je modul dodatni modul na Drupal.org i želi da testira promene zavisnosti modula koristeći DrupalCI kao deo razvoja, treba da ima composer.json koji izražava te Drupal modulske zavisnosti (DrupalCI može detektovati promene zavisnosti samo u patch-evima unutar composer.json, a ne u .info ili .info.yml fajlovima).

Vidi takođe

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.