Podteme
Podteme, kao i svaka druga tema, razlikuju se po jednoj karakteristici: one nasleđuju resurse roditeljske teme. Ne postoje ograničenja u lancu koji povezuju podteme sa njihovim roditeljima. Podtema može biti dete druge podteme, i može biti razgranata i organizovana kako god želite. Ovo daje podtemama veliki potencijal.
Da biste kreirali podtemu, definišite je kao bilo koju drugu temu i navedite njenu osnovnu temu pomoću ključa „base theme“. (Napomena: ovaj ključ nema donju crtu.)
Primer podteme: Fluffiness
Fluffiness je primer podteme koja koristi Classy kao osnovnu temu.
Ovo je struktura foldera u kojoj ćete imati sledeće fajlove:
themes/ └── fluffiness/ ├── fluffiness.info.yml └── fluffiness.libraries.yml
Info fajl se zove fluffiness.info.yml:
name: Fluffiness type: theme description: This is a fluffy sub theme of Classy core: 8.x # Defines the base theme base theme: classy # Defines libraries group in which we can add css/js. libraries: - fluffiness/global-styling # Regions regions: header: Header featured: Featured content: Content sidebar_first: First sidebar sidebar_second: Second sidebar footer: Footer
Uključite fajl fluffiness.libraries.yml da biste dodali css/js u grupu globalnih stilova definisanu gore u sekciji library:
global-styling: css: component: css/style.css: {}
Više informacija o dodavanju CSS stilova i JavaScript fajlova u Drupal 8 temu.
Ako želite da koristite drugo ime umesto „fluffiness“, jednostavno zamenite sva pojavljivanja „fluffiness“ svojim imenom (uključujući ime foldera). Na primer:
themes/ └── my_custom_theme/ ├── my_custom_theme.info.yml └── my_custom_theme.libraries.yml
Tekst koji unesete u liniju „name:“ u info.yml fajlu je slobodan i ne mora tačno da odgovara imenu fajla vaše podteme. Na primer, može izgledati ovako:
name: My Custom Theme # (sve ostale linije su izostavljene radi preglednosti)
Podtema podteme
Kada kreirate podtemu podteme, morate kao osnovnu temu navesti podtemu.
- Fluffiness: prva podtema Classy
name: Fluffiness type: theme description: This is a fluffy sub theme of Classy core: 8.x # Defines the base theme base theme: classy
- Shaved: podtema Fluffiness (podtema podteme Classy)
name: Shaved type: theme description: This is a reduced fluff sub theme of Fluffiness core: 8.x # Defines the base theme base theme: fluffiness
Napomena: parametar base theme je machine name osnovne teme, dok je name opisni naziv.
Nasleđivanje tematskih regiona
Regije teme se ne nasleđuju od navedene osnovne teme. Ako parametar regions: ostane prazan u info.yml fajlu vaše podteme ili ne sadrži sve regione osnovne teme, onda se podrazumevane regije u Drupalu mogu koristiti kao rezervne opcije za postavljanje blokova u vašoj podtemi. Preporučujemo da kopirate sve regione definisane u osnovnoj temi u info.yml vaše podteme.
# Pošto se regioni ne nasleđuju, svaki region uključujući standardne # Drupal regione kao i regione osnovne teme mora biti definisan u # podtemi. Ovaj primer prikazuje podtemu koja koristi # podskup standardnih Drupal regiona (1), plus neke prilagođene # regione definisane u osnovnoj temi (2), i na kraju tri # "kolofonska" regiona definisana u ovoj podtemi. regions: # 1. Standardni Drupal regioni (takođe definisani i korišćeni u osnovnoj temi). # 2. Regioni preuzeti iz osnovne teme. # 3. Dodatni prilagođeni regioni podteme. header: 'Header' # 1 primary_menu: 'Main menu' # 1 secondary_menu: 'Secondary menu' # 1 highlighted: 'Highlighted' # 1 help: 'Help' # 1 section_nav: 'Section Nav' # 2 breadcrumb: 'Breadcrumb' # 1 page_title: 'Page Title' # 2 local_tasks: 'Local Tasks' # 2 content: 'Content (Constrained)' # 1 content_fullwidth: 'Content (Edge-to-edge)' # 2 colophon_first: 'Colophon First Col' # 3 colophon_second: 'Colophon Second Col' # 3 colophon_third: 'Colophon Third Col' # 3 footer: 'Footer' # 1
Nasleđivanje postavljanja blokova
U Drupalu 8 teme mogu dolaziti sa folderom config/install/, gde se unapred definisane konfiguracije blokova, uključujući njihovu poziciju u regionima tema, uvoze prilikom aktivacije teme. Drupal može naslediti te konfiguracije blokova i pozicije regiona od osnovne teme, ali ako regioni definisani u info.yml fajlu vaše podteme ne odgovaraju onima u osnovnoj temi, može doći do nepredvidivog postavljanja blokova u slučajnim regionima.
Nasleđivanje blok šablona
Ako proširena tema ima prilagođene blok šablone, oni neće biti odmah nasledjeni, jer podtema kreira kopije svih blokova iz roditeljske teme i preimenuje ih sa prefiksom imena podteme. Twig šabloni za blokove se dobijaju iz imena bloka, što narušava vezu između tih šablona i njihovih blokova. Rešenje ovog problema trenutno zahteva trik u podtemi. Sledeći primer pravi fajl shaved.theme u direktorijumu podteme. U njega ubacite sledeći hook:
/** * Implements hook_theme_suggestions_HOOK_alter for blocks. */ function shaved_theme_suggestions_block_alter(&$suggestions, $variables) { // Učitaj sugestije tema za blokove iz roditeljske teme. foreach ($suggestions as &$suggestion) { $suggestion = str_replace('shaved_', 'fluffiness_', $suggestion); } }
Za vaše podteme zamenite „shaved“ sa imenom vaše podteme, a „fluffiness“ sa imenom vaše osnovne teme.
Razlike u odnosu na Drupal 7
Najprimetnija razlika u odnosu na Drupal 7 je što su .info fajlovi postali .info.yml fajlovi koji koriste YAML sintaksu.
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.