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

Instrukcije za transformaciju Drupal Twig (tpl.php u html.twig)

19/06/2025, by Ivan

Ovaj dokument je korišćen tokom većeg dela procesa transformacije Twig za Drupal 8 i može vam biti koristan i za ažuriranje vaših sopstvenih tema i modula kako bi koristili Twig šablonski engine u Drupalu 8.

Napomena: sav rad sa Twig-om sada se obavlja u Drupal jezgru problematične liste. Koristite samo sandbox za transformaciju Twig-a da pronađete prethodno transformisane šablone i funkcije.

Koraci za glavne učesnike:

  • Pronađite glavne probleme za objavljivanje i pregled ispravki.
  • Ne primenjivati zakrpe na sandbox
  • Ne pravite zakrpe za sandbox.
  • Koristite sandbox samo za testiranje i/ili dobijanje prethodno transformisanog koda.
  • Pogledajte ovaj YouTube video za pregled ovog procesa.

 

Podešavanje

Klonirajte Drupal 8.0.x:

git clone -b 8.0.x http://git.drupal.org/project/drupal.git d8

Trenutna radna verzija Drupala će biti instalirana u folder „d8“ (nazovite je kako želite)

1. Instalirajte Drupal kao i obično (koristeći Standardni instalacioni profil).
2. Podesite sva 3 Twig parametra (debugging, cache, auto_reload) na True u services.yml.

Transformacija

Tema funkcije

Transformišite temu funkciju u šablonsku datoteku i funkciju za prethodnu obradu:

1. Identifikujte datoteku iz koje potiče vaša tema (theme.inc? Core/modules/color/?)
2. Kreirajte šablonsku datoteku X.html.twig za vašu temu funkciju:
                     - Nazovite novu datoteku u skladu sa funkcijom
                     - Uklonite prefix theme_ sa početka imena funkcije i završite naziv datoteke sa .html.twig
                     - Pretvorite donje crte („_“) u crte („-“).
                     - Primeri:
                                * theme_link() postaje link.html.twig
                                * theme_user_signature() postaje user-signature.html.twig

3. Postavite vaš novi Twig šablon u folder sa šablonima u punoj temi (u sandbox-u):
                     - za funkcije koje potiču iz određenog modula, npr. stark/templates/comment itd.
                     - za funkcije koje potiču iz theme.inc, stark/templates/theme.inc
                     - za funkcije koje potiču iz form.inc, stark/templates/form.inc
4. Posetite dokumentaciju Drupal 8 API i pronađite vašu funkciju.
                     - (postoje linkovi ka svim funkcijama u elektronskoj tabeli)
5. Dodajte PHP stil dokblock na vrh datoteke i uokvirite ga Twig komentarima {# #}
                     - Dodajte liniju @file na samom vrhu.
                     - Kopirajte definiciju funkcije odmah ispod linije @file. Prepišite „Vraća HTML ...“ kao „Podrazumevana tema implementacija ...“. Prepišite da stane u jedan red.
                     - Dodajte liniju „Dostupne promenljive:“ (zamenite @param promenljive)
                     - Kopirajte promenljive navedene u sekciji „Parametri“ u dokumentaciji api.drupal.org
                     - Uklonite liniju @see template_preprocess(), ako postoji.
                     - Dodajte liniju @see template_preprocess_THEME_HOOK().
                     - Dodajte liniju @ingroup za temu (vidi primer dokblocka niže).

6. Kopirajte izvorni kod vaše funkcije ispod dokbloka (vidi primer dole)
7. Izmenite PHP kod uglavnom u HTML i print izraze
                   - Uklonite PHP kod iz HTML-a, primeri:
                               * function whatever() {
                               * // …
                               * return $output; }
                   - Uklonite PHP print izraze i zamenite ih sa {{}}
                               * Pretvorite $variables u jednostavna imena: $variable['title'] postaje {{title}}
                               * Zamenite sintaksu niza sa tačkom: $variable['page']['tabs'] postaje {{page.tabs}}
                   - Uklonite PHP logiku i zamenite je Twig grananjem {%%}.
                               * <?php foreach $items as $item?> postaje {% for item in items %}
                   - Zamenite PHP komentare Twig komentarima: {# #}
                   - Zamenite funkcije t() oko literalnih vrednosti sa Twig filtrom t: {{ 'tekst u navodnicima'|t }}
                   - Sav PHP kod za logiku promenljivih premestite u funkciju prethodne obrade. (instrukcije za prethodnu obradu slede niže.)
8. Ako primetite stvari koje biste želeli da unapredite, na primer, da spojite šablone koji izgledaju suvišno u jedan ili poboljšate markup ili imena promenljivih, zabeležite to u ovoj elektronskoj tabeli ili otvorite problem u našem sandboxu.

Transformacija ili spajanje u funkcije prethodne obrade

NAPOMENA:

  • Funkcije prethodne obrade će zameniti sve teme funkcija.
  • Ako u vašem šablonu postoji PHP logika koja utiče na promenljive za štampu, taj kod treba da se premesti u funkciju prethodne obrade.
  • Ako je vaš šablon nekada bio tema funkcija, funkciju teme treba transformisati u funkciju prethodne obrade.
  • Ako neke teme funkcija već imaju pripadajuće funkcije prethodne obrade, kod obrade promenljivih treba premestiti u prethodnu obradu.
  • Nemojte dodavati liniju u vašu implementaciju hook_theme koja kaže Drupalu da koristi šablonsku datoteku umesto funkcije teme.

 

INSTRUKCIJE:

  • Preimenujte theme_VASFUNKCIJA u template_preprocess_VASFUNKCIJA.
  • Prosledite $variables po referenci dodavanjem ampersanda, npr. theme_select($variable) postaje template_preprocess_select(&$variable).
  • Izmenite funkciju tako da obrađuje samo logiku promenljivih; uklonite bilo kakav markup (npr. $output).

Ako u vašim Twig šablonima nedostaju neke funkcije...

Ako vam je potreban pristup filteru ili funkciji u Twig šablonu koja još nije podržana, dodajte je u ovaj otvoreni zadatak. Imajte na umu da većinu PHP ili Drupal funkcija treba premestiti u funkcije prethodne obrade. Samo ako mislite da će temal developer morati pristupiti toj funkciji direktno u šablonu, ona treba ostati u šablonu.

JEDNOSTAVAN PRIMER TRANSFORMACIJE (theme_link)

PHP kod

function theme_link($variables) { return '<a href="' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '">' . $variables['text'] . '</a>'; }

Twig šablon (ime datoteke: link.html.twig)

{# /**
 * @file
 * Podrazumevana implementacija teme za prikaz linka.
 *
 * Dostupne promenljive:
 * - text: Tekst linka za  tag.
 * - url: Kompletan URL na koji se linkuje, npr.
 *   "/node/34" ili "http://example.com/foo".
 * - attributes: Preostali HTML atributi za element koji sadrži link.
 *
 * @see template_preprocess_link()
 *
 * @ingroup themeable
 */ #}
{{ text }}

Izmene u system.module (funkcija prethodne obrade)

/**
 * Priprema promenljive za link šablone.
 *
 * Podrazumevani šablon: link.html.twig.
 *
 * @param array $variables
 *   Asocijativni niz koji sadrži:
 *   - text: Prevedeni tekst linka za  tag.
 *   - path: Interni put ili eksterni URL na koji se linkuje.
 *   - options: Asocijativni niz dodatnih opcija.
 */
function template_preprocess_link(&$variables) {
  $variables['url'] = url($variables['path'], $variables['options']);
}

Komentari:

Andrej Podanenko: http://drupal.org/node/1783130 Kako preimenovati promenljive
jen: Dodajte sopstvene Twig komentare za početak i kraj {# i #}.
jen: pratite Twig komentare sa standardnim PHP doxygen markerima za doxygen.
jen: kopirajte i nalepite definiciju iz api.drupal.org
Džejms Vilson: Ako kopirate definiciju iz * funkcije *, prepišite „Vraća HTML ...“ kao „Podrazumevana tema implementacija“
jen: kopirajte i nalepite „Parametre“ iz api.drupal.org
Džejms Vilson: Uklonite znak dolara iz imena promenljivih, a ako treba da se pozovete na drugu promenljivu iz doc bloka, koristite jednostruke navodnike oko imena promenljive. [Pogledajte raspravu o politici ovde http://drupal.org/node/1804710]
jen: „štampate“ promenljive u Twig-u sa {{}}
jen: atributi su „bušeni“, tako da možete pristupiti klasama
jen: Većinu funkcija kao što je url() treba ukloniti iz šablona i dodati u preprocess funkciju.

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.