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
19/06/2025, by Ivan

Kako Twig obično funkcioniše

Podrazumevano, Twig tematski mehanizam kompajlira šablone u PHP kod i čuva kompajlirani kod u memoriji. Kompajlirani kod nije pogodan za razvoj, jer promene u Twig šablonima se odmah ne osvežavaju na vašem Drupal sajtu.

Nakon što Twig završi sa generisanjem nekog markupa, u Render API-ju se pojavljuje još jedan nivo keširanja. Ovo uzima markup koji je Twig napravio i kešira ga tako da Twig uopšte ne učestvuje u daljim zahtevima stranica, zbog čega se Twig opcije za debagovanje na kraju zanemaruju.

Keševe možete očistiti preko Drupal interfejsa za čišćenje keša, ali za dalji razvoj je lakše podesiti Drupal tako da ni Twig ni Render API uopšte ne keširaju.

Podešavanje Twig i Render API za debagovanje

Dva nivoa API-ja, Twig i Render, treba podesiti odvojeno za potrebe debagovanja:

1. Twig engine nudi opcije za podešavanje debagovanja, automatskog osvežavanja (rekompajliranja) šablona i keširanja kompajliranih šablona u fajl sistemu. Ovo se podešava u vašem services.yml fajlu sajta.
2. Keširanje Render API-ja može se podesiti u fajlu settings.php vašeg sajta.

Detaljnije ćemo proći kroz ove dve faze ispod.

1. Podešavanje Twig za debagovanje

Možete koristiti Drupal konzolu za ovo; ili ručno napraviti izmene.

Kako uključiti debagovanje pomoću Drupal Console

Prvo instalirajte Drupal Console. Zatim pokrenite:

drupal site:mode dev 

Napomena: ovo menja više podešavanja, ali uključuje promenu sledećih vrednosti u vašem sites/default/services.yml fajlu:

twig.config: { debug: true } 

Treba da vidite nešto slično kao na slici ispod:

output_3

Kako ručno uključiti debagovanje

1. Pronađite services.yml fajl vašeg sajta, verovatno u sites/default/services.yml
2. Ako services.yml ne postoji, kopirajte default.services.yml i preimenujte ga u services.yml.
3. Izmenite fajl services.yml i uključite jedan ili više sledećih parametara za debagovanje:
           - Opcije debagovanja Twig
           - Twig sa automatskim osvežavanjem
           - Keš Twig
4. Očistite keš.

Pronađite podešavanja twig.config u services.yml i unesite izmene. Primer:

parameters:
  twig.config:
    debug: true 

Opcije debagovanja Twig-a

Napomena: ne koristite ih u produkciji! Ova tri parametra treba ostaviti nepostavljena (tj. podrazumevano) u produkcionim okruženjima.

- debug (podrazumevano: false)

Kada je debug: true uključeno:

  • Markup svakog Twig šablona je obavijen HTML komentarima koji sadrže informacije o temama, npr. predloge imena fajlova šablona.
  • Ova debag markup oznaka može izazvati pad automatizovanih testova koji direktno proveravaju renderovani HTML. Tokom automatizovanih testova twig_debug treba biti FALSE.
  • Funkcija dump() može se koristiti u Twig šablonima za prikaz informacija o promenljivim.
  • Twig šabloni se automatski rekompajliraju kad se izvorni kod promeni (vidi Auto_reload ispod).

- auto_reload (podrazumevano: null, određeno debagovanjem gore)

Kada je auto_reload: true postavljeno:

  • Automatski rekompajlira Twig šablone pri svakoj izmeni izvornog koda. Ako ne navedete vrednost za twig_auto_reload, ona se određuje prema vrednosti twig_debug.
  • Ako ne želite auto_reload i ne debagujete, ne morate menjati ovaj parametar. Samo uključite debug gore.

- cache (podrazumevano: true, ali se preklapa debagovanjem)

Kada je cache: false uključeno:

  • Ako nemate specifičan razlog, ne isključujte Twig keš. Kada uključite Twig debagovanje (ili samo auto_reload, ako iz nekog razloga ne želite debug), Twig keš vam neće smetati. Isključivanje Twig keša će usporiti razvoj, jer će svaki šablon biti kompajliran bez obzira na to da li je menjan ili ne. Takođe, nećete moći lako pregledati ili debagovati kompajlirane Twig šablone (PHP klase, podrazumevano u sites/default/files/php/twig) ako nisu keširani na disk.
  • Podrazumevano, Twig šabloni se kompajliraju i čuvaju u fajl sistemu radi bolje performanse. Isključivanje Twig keša znači da će se šabloni rekompajlirati iz izvornog koda pri svakom korišćenju. U većini slučajeva treba imati uključen twig_auto_reload i ne isključivati keš Twig-a.

 

2. Podešavanje Render API keša za debagovanje

Podrazumevano, Drupal kešira svaki render za blokove i entitete radi bržeg učitavanja stranica. To znači da promene u Twig šablonima za te elemente neće odmah biti vidljive. Podešavanje Render keša na null keš efektivno ovo isključuje.

Da biste isključili Render keš, dodajte sledeće linije:

  • u settings.php, pazeći da ih ne dodate na produkcioni sajt
  • ili u settings.local.php, prethodno otkomentarišući linije u dnu vašeg settings.php.

Te linije su:

$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml';
$settings['cache']['bins']['render'] = 'cache.backend.null';
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; 

Moguće je da su već prisutne u vašem settings.php fajlu, ali zakomentarisane; u tom slučaju samo ih otkomentarišite (ali ih kasnije obavezno ponovo zakomentarišite!).

Uspešno ste to uradili!

Sa podešenim Twig i Render API, očistite sve keševe: možete koristiti Drush ili otići u Konfiguracija -> Performanse i kliknuti na dugme Očisti sve keševe.

Na kraju, osvežite stranicu koju testirate: trebalo bi da vidite informacije o Twig debagu u izvoru stranice, a izmene Twig šablona bi odmah trebalo da budu primenjene na svaku osveženu stranicu.

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.