logo

Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, JavaScript փլագինների համար։ Փորձեք դասավորությունների կառուցման ապագան արդեն այսօր։

EBT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EBT մոդուլները

❗Լրացուցիչ Պարբերությունների Տեսակներ (EPT) - Պարբերությունների նոր փորձառություն

Լրացուցիչ պարբերության տեսակներ (EPT) - անալոգիական պարբերության վրա հիմնված մոդուլների հավաքակազմ։

EPT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EPT մոդուլները

Scroll

PHPTemplate և Twig պարադիգմների համեմատություն

19/06/2025, by Ivan

Menu

Twig-ի մասին

Twig-ը կոմպիլացված կաղապարային լեզու է՝ հիմնված PHP-ի վրա։ Երբ ձեր վեբէջը ցուցադրվում է, Twig շարժիչը վերցնում է կաղապարը և փոխակերպում այն կոմպիլացված PHP կաղապարի, որը պահվում է sites/default/files/php/twig թղթապանակում։ Կոմպիլյացիան կատարվում է մեկ անգամ, կաղապարային ֆայլերը պահվում են քեշում՝ կրկնակի օգտագործման համար և նորից կոմպիլացվում են Twig քեշը մաքրելիս։

Drupal Twig նախաձեռնությունը ունի նույն մոտիվացիան, ինչ Symfony-ն՝ ներդնել արդի, հզոր, OOP-բազայով շարժիչ, որը թույլ կտա ծրագրավորողներին ճիշտ կենտրոնանալ Drupal-ի վրա։

1. Docblock

PHPTemplate:

<?php 
/** 
 * @file
 * Ֆայլի նկարագրություն
 */
?>

Twig:

{# 
/** 
 * @file
 * Ֆայլի նկարագրություն
 */
#}

2. Ֆայլերի և ֆունկցիաների անվանումներ

PHPTemplate ֆայլ՝ node--article.tpl.php
Twig ֆայլ՝ node--article.html.twig

PHPTemplate ֆունկցիա՝ THEME_node_links()
Twig ֆայլ՝ node-links.html.twig

3. Փոփոխականներ

Փոփոխականի տպում՝

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

Հաշեշի բանալիով էլեմենտի տպում [1]

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

Փոփոխականի նշանակում՝

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

Զանգվածի նշանակում՝

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

4. Պայմաններ

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. Կառավարման կառուցվածքներ

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

6. Ֆիլտրեր

HTML-ի հատուկ էսկեյփացված սիմվոլներ՝

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

Մշակված չլինող արժեքներ՝

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

Թարգմանություն՝

PHPTemplate՝ <? Php print t ('Home'); ?>
Twig՝ {{'Home' | t}}

Թարգմանություն տեղադրված փոփոխականներով՝

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

Drupal 8 Twig ( trans tag ընդլայնումով):

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

Ցանկի միավորում՝

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

Ցանկի միավորում նշումով՝

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

PHPTemplate օրինակն ակնկալում է, որ $usernames-ը սովորական տողերի զանգված է։ Նույնը վերաբերում է առաջին Twig օրինակին, որտեղ usernames-ը նաև տողերի զանգված է։ Իսկ Drupal 8 Twig օրինակում usernames-ը պետք է լինի դրսևորվելի օբյեկտների զանգված։ Սա է հիմնական տարբերությունը Drupal 8 Twig-ի և սկզբնական Twig-ի միջև։ Drupal 8 Twig-ն կարող է «տպել» ինչպես սովորական տեքստը, այնպես էլ դրսևորվելի զանգվածները։

Նմանատիպությամբ ակնկալվում է, որ բոլոր երեք օրինակները նույն ելքը կունենան, բայց դա այդպես չէ (ստանդարտի դեպքում)։ Օրինակ՝

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

Վերոհիշյալը ենթադրում է, որ տարրերը տպվելու են ստորակետով առանձնացված, բայց արդյունքը կլինի՝ OneTwoThree

7. Տարանցիկների կառավարում

Twig-ը ունի տարածքների կառավարում, որը թույլ է տալիս հեռացնել տարածքները, որոնք օգտագործվում են կաղապարի ֆայլի կառուցվածքի համար։

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

Դա նույնն է, ինչ՝

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

Զգուշացում

  • Հաշեշի բանալիով էլեմենտի օրինակն կարող է փոխվել ապագայում
  • Երկրորդ օրինակում ցույց է տրվում, որ Twig-ն է կարգավորում տվյալների մաքրման գործընթացը։ Նախկինում դա արվում էր նախապատրաստման ֆայլերում կամ պրեփրոցեսոր ֆունկցիաներում։ Այս վերջին փոփոխությունը կարևոր է նրանց համար, ովքեր ցանկանում են Drupal 8-ի համար PHPTemplate թեմա պատրաստել՝ պահանջելով մաքրել իրենց տվյալները։ ↩︎︎

Լրացուցիչ տեղեկությունների համար դիտեք․

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.