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

O Twig-u

Twig je kompajlirani šablonski jezik zasnovan na PHP-u. Kada se vaša web stranica prikazuje, Twig engine uzima šablon i pretvara ga u "kompajlirani" PHP šablon koji se čuva u zaštićenom direktorijumu na putanji sites/default/files/php/twig. Kompajliranje se obavlja jednom, fajlovi šablona se keširaju za ponovnu upotrebu i rekompajliraju prilikom čišćenja Twig keša.

Drupal Twig inicijativa ima istu motivaciju kao i Symfony inicijativa: implementirati moderan, moćan, objektno-orijentisani engine koji programerima omogućava da se pravilno fokusiraju na Drupal.

1. Docblock

PHPTemplate:

<?php 
/** 
 * @file
 * Opis fajla
 */
?>

Twig:

{# 
/** 
 * @file
 * Opis fajla
 */
#}

2. Imena fajlova i funkcija

PHPTemplate fajl: node--article.tpl.php
Twig fajl: node--article.html.twig

PHPTemplate funkcija: THEME_node_links()
Twig fajl: node-links.html.twig

3. Promenljive

Štampanje promenljive:

PHPTemplate: <div class="content"><?php print $content; ?></div>
Twig: <div class="content">{{ content }}</div>

Štampanje elementa heš-ključa [1]

PHPTemplate: <?php print $item['#item']['alt']; ?>
Twig: {{ item['#item'].alt }} 

Postavljanje promenljive:

PHPTemplate: <?php $custom_var = $content->comments; ?>
Twig: {% set custom_var = content.comments %}

Postavljanje niza:

PHPTemplate: <?php $args = array('@author' => $author, '@date' => $created); ?>
Twig: {% set args = {'@author': author, '@date': created} %}

4. Uslovi

PHPTemplate: <?php if ($content->comments): endif; ?>
Twig: {% if content.comments %} {% endif %}

PHPTemplate: <?php if (!empty($content->comments)): endif; ?>
Twig: {% if content.comments is not empty %} {% endif %}

PHPTemplate: <?php if (isset($content->comments)): endif; ?>
Twig: {% if content.comments is defined %} {% endif %}

PHPTemplate: <?php if ($count > 0): endif; ?>
Twig: {% if count > 0 %} {% endif %}

5. Kontrolne strukture

PHPTemplate: <?php foreach ($users as $user) {} ?>
Twig: {% for user in users %} {% endfor %}

6. Filteri

Escapovani specijalni HTML karakteri:

PHPTemplate: <?php print check_plain($title); ?>
Twig[2]: {{ title }}

Nerođeni (raw) izlaz:

PHPTemplate: <?php print $title; ?>
Twig: {{ title|raw }}

Prevod:

PHPTemplate: <?php print t('Home'); ?>
Twig: {{ 'Home' | t }}

Prevod sa zamenama:

PHPTemplate: <?php print t('Welcome, @username', array('@username' => $user->name)); ?>
Twig: {{ 'Welcome, @username'|t({ '@username': user.name }) }}

Drupal 8 Twig (sa trans tag ekstenzijom):

{% set username = user.name %}
{% trans %}
  Welcome, {{ username }}
{% endtrans %}

Spajanje liste:

PHPTemplate: <?php echo implode(',', $usernames); ?>
Twig: {{ usernames | join(', ') }}

Spajanje liste sa markupom:

Twig: {{ usernames | safe_join(', ') }}

Primer PHPTemplate zahteva da je $usernames niz stringova. Isto važi i za originalni Twig primer, gde je "usernames" niz stringova. Sa druge strane, Drupal 8 Twig primer zahteva niz renderovanih objekata. Ovo je suštinska razlika između Drupal 8 Twig i originalnog Twig-a. Drupal 8 Twig može "štampati" i običan tekst i renderovane nizove.

Drugi aspekt ovog primera je da se očekuje da sva tri primera daju isti izlaz, ali to nije tako (podrazumevano). Uzmite primer:

  {% set numbers = [{'#markup': 'One'}, {'#markup':'Two'}, {'#markup':'Three'}] %}
  {{ numbers }}

Ovo bi trebalo da ispiše elemente razdvojene zarezom. Ali izlaz je: OneTwoThree

7. Kontrola razmaka

Twig ima kontrolu nad razmacima, što omogućava uklanjanje razmaka korišćenih za formatiranje šablona.

<div class="body">
  {{- block.content -}}
</div>

Ovo je isto kao:

<div class="body">{{ block.content }}</div>

Pažnja

Za dodatne informacije pogledajte:

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.