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
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.

Source URL:

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.