Rad sa Twig šablonima
Drupal vam omogućava da prepišete sve šablone koji se koriste za kreiranje HTML markupa, tako da možete potpuno kontrolisati markup koji se prikazuje kao izlaz u korisničkoj temi. Postoje šabloni za svaki element stranice, od visokog nivoa HTML-a pa sve do malih polja.
Prepisivanje šablona
Možete prepisati osnovne Drupal šablone tako što ćete dodati šablone u folder vaše teme, koji odgovaraju određenim konvencijama imenovanja.
Da biste prepisali šablone, potrebno je:
1. Pronađite šablon koji želite da prepišete.
2. Kopirajte šablonski fajl iz njegove osnovne lokacije u folder vaše teme.
3. (neobavezno) Preimenujte šablon u skladu sa konvencijama imenovanja da biste ciljali konkretniji podskup mesta gde se šablon koristi.
4. Izmenite šablon po želji.
Kada kopirate fajl šablona u vašu temu i očistite keš, Drupal će koristiti vašu verziju šablona umesto osnovne.
Možete saznati koji se šabloni koriste za bilo koji deo stranice koristeći Twig debug alate.
Tematski hook predlozi
Ponekad želite da izvršite promene u fajlu šablona, ali samo za određena mesta gde se koristi. Tipičan primer je izmena fajla šablona nod-a samo za nodove određenog tipa. Drupal tematski sloj vam omogućava da ciljate specifične slučajeve upotrebe fajla šablona, prateći određenu konvenciju imenovanja. Prilikom renderovanja članka, Drupal prvo traži fajl šablona node--article.html.twig i koristi ga ako postoji. Ako ne postoji, koristi se podrazumevani node.html.twig. Proces kojim Drupal određuje koje potencijalne nazive fajlova šablona može koristiti naziva se predlozi teme.
Predlozi tema omogućavaju vam da implementirate ciljana prepisivanja u vašoj temi za fajlove šablona sa određenim konvencijama imenovanja.
Svi slojevi - iz kernela, modula, tema i tema motora - mogu ponuditi predloge. Možete dodavati ili menjati predloge koristeći sledeće hook-ove:
- hook_theme_suggestions_HOOK(array $variables)
- hook_theme_suggestions_alter(array &$suggestions, array $variables, $hook)
- hook_theme_suggestions_HOOK_alter(array &$suggestions, array $variables)
Čišćenje keša
Kada radite sa predlozima tema, moguće je da Drupal koristi svoj keš umesto novih šablona koje ste predložili. Očistite keš ako naiđete na ovaj problem. Da biste očistili keš, koristite jedan od metoda opisanih u odeljku za čišćenje Drupal keša.
Izvorna informacija
Možete posmatrati predloge kao smernice za imenovanje koje govore sistemu koje fajlove da izabere u odgovarajućim okolnostima.
Predlozi šablona se postavljaju kroz tematske hook-ove koji se mogu menjati. Ovi hook-ovi omogućavaju bilo kom modulu ili temi da ponudi alternativne tematske funkcije ili predloge imena šablona i da reordira ili ukloni predloge koje pruža hook_theme_suggestions_HOOK() ili raniji pozivi ovih hook-ova.
Kako Drupal određuje predloge tema za stranicu na osnovu puta
Evo dodatnog objašnjenja zasnovanog na funkciji theme_get_suggestions():
Lista mogućih šablona za stranicu se generiše pozivom funkcije theme_get_suggestions(), koja se poziva unutar system_theme_suggestions_page().
Putanja stranice u Drupalu se prvo razlaže na njene komponente. Kao što je pomenuto, Drupal putanja nije nijedan od njegovih aliasa: postoji samo jedna Drupal putanja za stranicu. Za primere "http://www.example.com/node/1/edit" i "http://www.example.com/mysitename?q=node/1/edit", Drupal putanja je node/1/edit, a njeni delovi su "node", 1 i "edit".
Zatim se postavlja prefiks "page". Za svaki deo putanje se primenjuje sledeća logika:
1. Ako je deo broj, doda se prefiks plus "__%" u listu predloga.
2. Bez obzira da li je deo broj ili ne, doda se prefiks plus "__" plus taj deo.
3. Ako deo nije broj, doda se "__" plus taj deo prefiksu.
Nakon obrade svih delova, ako je stranica početna (podešeno u "Administration > Configuration > System > Site information."), dodaje se "page__front" u listu predloga.
Na kraju, da bi se predlog pretvorio u ime fajla, "__" se menja u "--", a na kraj se dodaje ".html.twig". Tako da za node/1/edit dobijamo sledeću listu predloga:
1. page.html.twig (uvek predlog)
2. page--node.html.twig (prefiks: page__node)
3. page--node--%.html.twig
4. page--node--1.html.twig (prefiks ne menja jer je deo broj)
5. page--node--edit.html.twig (prefiks: page__node__edit)
6. page--front.html.twig (ako je stranica početna)
Kada se stranica prikazuje, Drupal proverava poslednji predlog. Ako postoji, koristi se on. U suprotnom, proverava sledeći predlog i tako dalje. Ako nijedan od specifičnih predloga ne postoji, koristi se page.html.twig. Ovo objašnjava i zašto page--front.html.twig, ako postoji, ima prioritet nad ostalim predlozima za početnu stranicu: to je uvek poslednji predlog za stranicu označenu kao početna.
Razlike u odnosu na Drupal 7
Ranije ste menjali predloge šablona tako što ste menjali $variables['theme_hook_suggestion'] i $variables['theme_hook_suggestions'] u preprocess funkcijama da biste dodali predloge. U Drupalu 8, moduli i teme sada definišu i menjaju predloge tema u sopstvenim hook-ovima.
Više informacija
Pročitajte Nove hook-ove za tematske predloge za dodatne informacije.
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.