Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

6.4.Twig-ը Drupal-ի նոր կաղապարային շարժիչ է:

11/11/2022, by Narine

Եթե բացում եք Stable theme page.html.twig կաղապարի ֆայլը՝

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

Այնուհետև կտեսնեք, որ այն տարբերվում է Drupal 7 page.tpl.php ձևանմուշից՝ նախ ընդլայնմամբ և երկրորդ՝ գանգուր փակագծերի առատությամբ {}։ Այս ամենը պայմանավորված է նրանով, որ Drupal-ն օգտագործում է Twig կաղապարի շարժիչը:

<main role="main">
    <a id="main-content" tabindex="-1"></a>{# link is in 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>

PHP-ն չի կարող օգտագործվել twig կաղապարում, ուստի անհրաժեշտ է օգտագործել միայն Twig գործիքները, և դրանք բավական են կայքի ոճավորման համար։

Եկեք պարզենք, թե ինչպես աշխատել Twig-ի հետ:

Փոփոխականներ Twig-ում

Եթե PHP-ում մենք օգտագործում ենք դոլարի նշանը փոփոխականների համար, ապա twig-ում մենք օգտագործում ենք գանգուր փակագծեր.

{{variable}}

Այսպիսով, մենք գրում ենք փոփոխականները երկու բացվող փակագծեր, բացատ, փոփոխականի անվանում, բացատ, երկու փակող փակագծեր։ Փոփոխական դուրս գալու համար պետք չէ twig փոփոխականի դիմաց ավելացնել տպման ֆունկցիան, մենք ընդհանրապես չենք օգտագործում PHP twig կաղապարներում; փոփոխական դուրս բերելու համար պարզապես անհրաժեշտ է այն նշել կրկնակի գանգուր փակագծերում:

Հարմար է նաև աշխատել փոփոխական օբյեկտների և զանգվածների հետ, եթե ավելի վաղ անհրաժեշտ էր իմանալ, որ $ հանգույցը օբյեկտ է, իսկ $ form-ը զանգված է, այժմ ամեն ինչ ավելի պարզ է, մենք կետի միջոցով անդրադառնում ենք փոփոխականների հատկություններին.

{{node.id}}

Մենք հեշտությամբ կարող ենք փոփոխականներ ստեղծել.

{% set foo="bar" %}
 
Hi, here's my variable: {{ foo }}

Ուշադրություն դարձրեք այն շարահյուսությանը, որ երբ մենք փոփոխական ենք դնում, մենք օգտագործում ենք տոկոսային նշանի փակագիծ, իսկ երբ ցուցադրում ենք փոփոխական, օգտագործում ենք կրկնակի փակագծեր:

Մենք կարող ենք նշել ոչ միայն տողեր, այլև զանգվածներ.

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

Twig զիչներ

Չնայած twig-ը լիարժեք ծրագրավորման լեզու չէ, այն ունի տվյալների հետ աշխատելու գործիքների հավաքածու։ Հավանաբար, նման ամենակարևոր գործիքը ֆիլտրերն են: Զտիչները նշված են խողովակի |

{{ variable|filter }}

Զտիչները թույլ են տալիս փոխել փոփոխականների ելքը, օրինակ՝

{{node.title | length}} - տպում է տողի երկարությանը

{{node.title | uppercase}} - ցուցադրում է տողը մեծատառով

{{node.title | lowercase}} - թողարկել տողը փոքրատառով

Twig ֆիլտրերի ամբողջական ցանկի համար տե՛ս Twig-ի պաշտոնական փաստաթղթերը http://twig.sensiolabs.org/doc/filters/index.html

Drupal Twig զտիչներ

Drupal-ը նաև ավելացնում է իր զտիչները Twig-ին, օրինակ՝ գծերի հոսքերի զտիչները: Եթե նախկինում մենք օգտագործում էինք t () ֆունկցիան, որը ներդրվում էր PHP-ում, իսկ այժմ չենք կարող օգտագործել PHP կոդը Twig-ում, ապա մեզ անհրաժեշտ է գործիք, որը փոխարինում է t () ֆունկցիան։

Գտեք օրինակներ ըստ

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

 

Գծի սնումը ճյուղերի օրինակով

Twig-ն օգտագործում է տողեր տարբեր լեզուների համար։ Տող թարգմանելու համար անհրաժեշտ է օգտագործել {% trans%} պիտակը: Ուշադրություն դարձրեք, թե ինչպես են գրված կառավարման կառույցները: Փոփոխականներից տարբերվելու համար նրանք օգտագործում են տոկոս նշանը:

{% trans %} Hello world {% endtrans %}

Մենք կարող ենք նաև փոփոխականներ փոխանցել տողերին թարգմանության համար.

{% trans %} Hello {{ name }} {% endtrans %}

Մենք կարող ենք նաև փոփոխել փոփոխականները ֆիլտրերի միջոցով՝ նախքան թարգմանչական տողերում ցուցադրելը

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

Մեկնաբանություններ Twig ում

{# Comment here #}

If պայմանի օպերատոր

Չնայած մենք չունենք PHP-ի առանձնահատկությունների մեծ մասը twig-ում, մենք ունենք մի շարք կառուցվածքներ զանգվածների և փոփոխականների հետ աշխատելու համար: Օրինակ, մենք կարող ենք ստուգել, արդյոք փոփոխական գոյություն ունի, նախքան այս փոփոխականը ցուցադրելը:

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

Twig ցիկլ

Շատ հաճախ կաղապարներում անհրաժեշտ է կրկնել զանգվածի վրա և այն տարր առ տարր դուրս բերել: Դա անելու համար Twig-ում մենք օգտագործում ենք for loop (նման է foreach-ին PHP-ում).

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

Մենք կարող ենք նաև օգտագործել for հանգույցը, ինչպես սովորական for հանգույցը PHP-ի համար, բայց միայն այլ ձևով.

{% for i in range(0, 3) %}
  {{ i }},
{% endfor %}
Variable    Description
items.index     Current item number starting at 1
items.index0    Current item number starting at 0
items.revindex    The number of the current element from the end, starting from 1
items.revindex0    The number of the current element from the end, starting at 0
items.first    TRUE if this is the first item
items.last    TRUE if this is the last item
items.length    Item array length
items.parent    Parent context

 

Մենք կարող ենք նաև օգտագործել for else կառուցումը.

<ul>
{% for user in users %}
  <li>{{ user.username|e }}</li>
{% else %}
  <li><em>no user found</em></li>
{% endfor %}
</ul>