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

6.4. Twig je novi šablonski (template) engine za Drupal.

27/05/2025, by Ivan

Ako otvorite fajl šablona page.html.twig teme Stable:

/core/themes/stable/templates/layout/page.html.twig

Videćete da se razlikuje od šablona page.tpl.php iz Drupala 7, prvo po ekstenziji, a drugo po obilju kovrdžavih zagrada {}. Sve je to zato što Drupal koristi Twig šablonski engine.

<main role="main">
    <a id="main-content" tabindex="-1"></a>{# link je u html.html.twig #}
 
    <div class="layout-content">
      {{ page.content }}
    </div>{# /.layout-content #}
 
    {% if page.sidebar_first %}
      <aside class="layout-sidebar-first" role="complementary">
        {{ page.sidebar_first }}
      </aside>
    {% endif %}
 
    {% if page.sidebar_second %}
      <aside class="layout-sidebar-second" role="complementary">
        {{ page.sidebar_second }}
      </aside>
    {% endif %}
 
  </main>

U twig šablonu se ne može koristiti PHP, tako da treba koristiti samo Twig alate, a oni su dovoljni za stilizovanje sajta.

Hajde da shvatimo kako se radi sa Twig-om.

Varijable u Twig-u

Ako u PHP koristimo znak dolara $ za varijable, onda u Twig-u koristimo kovrdžave zagrade:

{{variable}}

Tako pišemo varijable sa dve otvarajuće zagrade, razmak, ime varijable, razmak, dve zatvarajuće zagrade. Da bismo ispisali varijablu, ne treba nam print funkcija ispred twig varijable, u twig šablonima se uopšte ne koristi PHP; da ispišemo varijablu samo je potrebno da je napišemo u dvostrukim kovrdžavim zagradama.

Takođe je zgodno raditi sa objektima i nizovima varijabli, ako je ranije trebalo znati da je $node objekat, a $form niz, sada je sve jednostavnije, svojstva varijabli pristupamo preko tačke:

{{node.id}}

Jednostavno možemo praviti i svoje varijable:

{% set foo="bar" %}
 
Zdravo, evo moje varijable: {{ foo }}

Obratite pažnju na sintaksu, kad postavljamo varijablu koristimo procenat %, a kad ispisujemo varijablu koristimo dvostruke zagrade.

Možemo navesti ne samo stringove, već i nizove:

{%
  set foo_array = [
    'foo',
    'bar',
  ]
%}

Twig filteri

Iako Twig nije potpuni programski jezik, ima set alata za rad sa podacima. Verovatno najvažniji takav alat su filteri. Filteri se navode pomoću znaka pipe |

{{ variable|filter }}

Filteri omogućavaju promenu prikaza varijabli, na primer:

{{node.title | length}} - ispisuje dužinu stringa

{{node.title | upper}} - prikazuje string velikim slovima

{{node.title | lower}} - ispisuje string malim slovima

Za kompletan spisak Twig filtera, pogledajte zvaničnu Twig dokumentaciju na http://twig.sensiolabs.org/doc/filters/index.html

Drupal Twig filteri

Drupal takođe dodaje svoje filtere Twig-u, kao što su filteri za prelome linija. Ako smo ranije koristili funkciju t() koja je implementirana u PHP-u, a sada ne možemo koristiti PHP u Twig-u, potrebni su nam alati koji zamenjuju funkciju t().

Primeri filtera su:

  • t
  • passthrough
  • placeholder
  • drupal_escape
  • safe_json
  • without
  • clean_class
  • clean_id

Prelomi linija u Twig-u

Twig koristi tagove za prevod stringova. Da biste preveli liniju, koristite tag {% trans %}. Obratite pažnju kako su napisane kontrolne strukture. Koriste procenat % da bi se razlikovale od varijabli.

{% trans %} Zdravo svet {% endtrans %}

Možemo proslediti i varijable unutar prevedenih stringova:

{% trans %} Zdravo {{ name }} {% endtrans %}

Takođe možemo promeniti varijable filterima pre prikaza u prevodu:

{% set name = name|capitalize %}
 
{% trans %}
  Zdravo {{ name }}!
{% endtrans %}

Komentari u Twig-u

{# Ovde ide komentar #}

Uslovni if iskaz

Iako Twig nema većinu PHP funkcionalnosti, ima set konstrukcija za rad sa nizovima i varijablama. Na primer, možemo proveriti da li varijabla postoji pre nego što je prikažemo.

{% if site_slogan %}
  <div class="site-slogan">{{ site_slogan }}</div>
{% endif %}

Twig petlja

Vrlo često u šablonima treba iterirati kroz niz i ispisivati elemente jedan po jedan. Za to u Twig-u koristimo for petlju (slično foreach u PHP-u):

{% for item in items %}
  {{ item.content }}
{% endfor %}

Takođe možemo koristiti for petlju kao običnu for petlju u PHP-u, ali u drugačijem obliku:

{% for i in range(0, 3) %}
  {{ i }},
{% endfor %}
Varijabla Opis
items.index Trenutni broj stavke počevši od 1
items.index0 Trenutni broj stavke počevši od 0
items.revindex Broj trenutnog elementa od kraja, počevši od 1
items.revindex0 Broj trenutnog elementa od kraja, počevši od 0
items.first TRUE ako je ovo prvi element
items.last TRUE ako je ovo poslednji element
items.length Dužina niza stavki
items.parent Parent kontekst

for else konstrukcija

<ul>
{% for user in users %}
  <li>{{ user.username|e }}</li>
{% else %}
  <li><em>nije pronađen nijedan korisnik</em></li>
{% endfor %}
</ul>