Već smo videli da Drupal ima ugrađen Twig i kako ga koristiti. U ovom članku ćemo razgovarati o tome kako raditi sa Drupal šablonima, koji su šabloni u Stable temi, kako redefinisati Stable šablone i kako redefinisati šablone različitih Drupal entiteta.
Dakle, počnimo sa Stable teminim šablonima, idemo u folder templates Stable teme:
Šabloni su razvrstani prema funkcionalnim atributima:
/core/themes/stable/templates/admin - šabloni za Views UI, stranice i administrativne stavke, šabloni za poruke i izveštaje.
/core/themes/stable/templates/block - šabloni blokova.
/core/themes/stable/templates/content - šabloni za nodove, komentare, termine taksonomije, rss elemente, rezultate pretrage.
/core/themes/stable/templates/content-edit - šabloni za filtere i forme za uređivanje.
/core/themes/stable/templates/dataset - šabloni foruma, rss kanala, tabela, lista ul.
/core/themes/stable/templates/field - šabloni polja različitih tipova.
/core/themes/stable/templates/form - šabloni elemenata formi (polja različitih tipova).
/core/themes/stable/templates/layout - šabloni za strukturu stranice page.html.twig, regiona, glavnog šablona html.html.twig - gde su svi ostali šabloni ugrađeni.
/core/themes/stable/templates/misc - šabloni za RSS, RDF markup ikone, Drupal poruke, progress bar.
/core/themes/stable/templates/navigation - šabloni menija, knjiga (book modul), pager, toolbar, vertikalne kartice, breadcrumbs.
/core/themes/stable/templates/user - šabloni za korisničku stranu, korisničko ime, potpis ko je postavio forum post.
/core/themes/stable/templates/views - šabloni raznih elemenata Views modula.
Kao što vidite, Stable tema pruža širok spektar šablona za teming. Da biste redefinisali ove šablone, samo ih kopirajte u svoj podtemu i menjajte po želji. Možete kopirati sve šablone, ali savetujem da kopirate samo one koje su vam potrebne.
Redefinisanje šablona za sadržaj (predlozi šablona)
Možete redefinisati ne samo postojeće šablone, već i dodati svoje za pojedinačne nodove, termine taksonomije, blokove itd. Evo nekoliko primera redefinisanja šablona.
HTML šablon
HTML šablon uključuje osnovnu strukturu HTML stranice.
Glavni šablon:
html.html.twig (osnovna lokacija: core/modules/system/templates/html.html.twig)
Primeri redefinisanja:
1. html--internalviewpath.html.twig
2. html--node--id.html.twig
3. html.html.twig
internalviewpath je unutrašnji put u Drupal-u, npr. node/15, taxonomy/term/46, user/2 i slično.
Više informacija:
html.html.twig dokumentacija
Page šablon
Opcije redefinisanja:
page--[front|internal/path].html.twig
Glavni šablon: page.html.twig (osnovna lokacija: core/modules/system/templates/page.html.twig)
Mogući šabloni stranica su raznovrsni. Prvo ide šablon za početnu stranu. Ostali zavise od unutrašnjeg puta. Početna stranica se podešava na:
/admin/config/system/site-information
Ne mešajte unutrašnji put sa aliasom; na primer, čvor vesti može imati put /news/node-title, ali njegov unutrašnji put je /node/node-id.
Za stranicu uređivanja nod-a, npr. http://www.example.com/node/1/edit, možete koristiti sledeće šablone:
page--node--edit.html.twig
page--node--1.html.twig
page--node.html.twig
page.html.twig
Više informacija:
page.html.twig dokumentacija
Regioni
Opcije redefinisanja:
region--[region].html.twig
: region.html.twig (osnovna lokacija: core/modules/system/templates/region.html.twig)
Region šablon se koristi kada region sadrži sadržaj kreiran kroz blok sistem ili preko hook_page_build() funkcije. Imena regiona definišu se u theme.info.yml fajlu.
Više informacija:
region.html.twig dokumentacija
Blokovi
Opcije redefinisanja:
block--[module|--delta].html.twig
Glavni šablon: block.html.twig (osnovna lokacija: core/modules/block/templates/block.html.twig)
Primeri:
1. block--module--delta.html.twig
2. block--module.html.twig
3. block.html.twig
'module' je ime modula koji prikazuje blok, a delta je interna ID blok-a u modulu.
Na primer, block--block--1.html.twig je prvi blok dodat kroz admin modul za blokove. Ako imate svoj modul sa blokom delta "my-block", šablon će biti block--custom--my-block.html.twig.
Za Views modul, šablon bloka se redefiniše na osnovu imena view-a i prikaza, npr.:
block--views-block--front-news-block-1.html.twig
Napomena: donji crte (_) se menjaju u crtice (-).
U Drupal-u ne možete definisati poseban šablon za blok u određenom regionu "od kutije".
Takođe, imena su osetljiva na velika i mala slova. Ako vam je modul MyModule, šablon će biti block--MyModule.html.twig.
Više:
block.html.twig dokumentacija
Sadržaji (Nodovi)
Opcije redefinisanja:
node--[type|nodeid]--[viewmode].html.twig
Glavni šablon: node.html.twig (osnovna lokacija: core/modules/node/templates/node.html.twig)
Moguće opcije redefinisanja:
1. node--nodeid--viewmode.html.twig
2. node--nodeid.html.twig
3. node--type--viewmode.html.twig
4. node--type.html.twig
5. node--viewmode.html.twig
6. node.html.twig
viewmode označava prikaz nod-a: Full, Teaser, RSS, Token i slično. Type je tip sadržaja, npr. News, Articles, Pages. Nodeid je nid, ID nod-a.
Više:
node.html.twig dokumentacija
Taksonomija termini
Opcije redefinisanja:
taxonomy-term--[vocabulary-machine-name|tid].html.twig
Glavni šablon: taxonomy-term.html.twig (osnovna lokacija: core/modules/taxonomy/templates/taxonomy-term.html.twig)
Opcije redefinisanja:
1. taxonomy-term--tid.html.twig
2. taxonomy-term--vocabulary-machine-name.html.twig
3. taxonomy-term.html.twig
Sve donje crte (_) u imenima taksonomijskih vokabulara se menjaju u crtice (-).
Više:
taxonomy-term.html.twig dokumentacija
Polja
Opcije redefinisanja: field--[type|name[--content-type]|content-type].html.twig
Glavni šablon: field.html.twig (osnovna lokacija: core/modules/system/templates/field.html.twig)
Opcije redefinisanja:
1. field--field-name--content-type.html.twig
2. field--content-type.html.twig
3. field--field-name.html.twig
4. field--field-type.html.twig
5. field.html.twig
Sve donje crte (_) u imenima tipova sadržaja i polja menjaju se u crtice (-).
Više:
field.html.twig dokumentacija
Komentari
Opcije redefinisanja:
comment--node-[type].html.twig
Glavni šablon: comment.html.twig (osnovna lokacija: core/modules/comment/templates/comment.html.twig)
Možete napraviti poseban šablon komentara za svaki tip nod-a, npr. comment--node-article.html.twig.
Više:
comment.html.twig dokumentacija
Takođe možete napraviti poseban šablon za obavijanje komentara.
Opcije redefinisanja:
comment-wrapper--node-[type].html.twig
Glavni šablon: comment-wrapper.html.twig (osnovna lokacija: core/modules/comment/templates/comment-wrapper.html.twig)
Views
Svi Views šabloni mogu se redefinisati koristeći mašinski naziv view-a, ID prikaza, tip prikaza (page, block ili drugi) ili kombinaciju.
Za svaki View se koristi bar dva šablona. Prvi je
views-view.html.twig.
Drugi zavisi od stila prikaza (neformatirana lista, tabela, grid, HTML lista). Podrazumevani je neformatirani šablon
views-view-unformatted.html.twig.
Ako prikazujete entitete kao ceo nod ili teaser, koristi se
views-view-fields.html.twig za polja, koji takođe možete redefinisati.
Primeri mogućih šablona za redefinisanje:
View ime - foobar (mašinski naziv)
Prikaz format - unformatted (neformatirana lista, itd.)
Stil prikaza - fields
Ime prikaza - page
views-view--foobar--page.html.twig
views-view--page.html.twig
views-view--foobar.html.twig
views-view.html.twig
views-view-unformatted--foobar--page.html.twig
views-view-unformatted--page.html.twig
views-view-unformatted--foobar.html.twig
views-view-unformatted.html.twig
views-view-fields--foobar--page.html.twig
views-view-fields--page.html.twig
views-view-fields--foobar.html.twig
views-view-fields.html.twig
Forum
Opcije redefinisanja: forums--[[container|topic]--forumID].html.twig
Glavni šablon: forums.html.twig (osnovna lokacija: core/modules/forum/templates/forums.html.twig)
Možete definisati šablone za kontejnere i teme foruma posebno:
forums--containers--forumID.html.twig
forums--forumID.html.twig
forums--containers.html.twig
forums.html.twig
Za teme foruma:
forums--topics--forumID.html.twig
forums--forumID.html.twig
forums--topics.html.twig
forums.html.twig
Više:
forums.html.twig dokumentacija
Maintenance režim
Opcije redefinisanja: maintenance-page--[offline].html.twig
Glavni šablon: maintenance-page.html.twig (osnovna lokacija: core/modules/system/templates/maintenance-page.html.twig)
Više:
maintenance-page.html.twig dokumentacija
Rezultati pretrage
Opcije redefinisanja:
search-result--[searchType].html.twig
Glavni šablon: search-result.html.twig (osnovna lokacija: core/modules/search/templates/search-result.html.twig)
Na primer, za pretragu nodova:
/search/node/Search+Term
koristite šablon search-result--node.html.twig.
Za pretragu korisnika:
/search/user/bob
koristite search-result--user.html.twig.