logo

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

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

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

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

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

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

Scroll

Հատկություններ օգտագործումը տեմպլեյթներում

19/06/2025, by Ivan

Menu

Շատ Twig տեմպլեյթներ կունենան մեկ կամ մի քանի Attribute օբյեկտ, որոնք փոխանցվում են որպես փոփոխականներ։ Attribute օբյեկտի նպատակն է պահել HTML հատկանիշների հավաքածու, ծրագրավորողին տրամադրելով օգտակար մեթոդներ տվյալների հետ աշխատելու համար և հեշտությամբ տպելու հատկանիշները։ Օրինակ՝ attribute.addClass('myclass') հեշտացնում է մի դաս ավելացնելը առանց տեքստերի կոնկատենացիայի մասին անհանգստանալու։

Սովորաբար հատկանիշները տեմպլեյթում պետք է ունենան այսպիսի տեսք՝

<div{{ attributes }}></div>

Էլեմենտի անունը և Twig սինտաքսի միջև չպետք է լինի բացատ։ Drupal 8-ի արմատում ներառված stable թեման ունի բազմաթիվ հատկանիշների օրինակներ։

Բոլոր տեմպլեյթների համար լռելյայն հասանելի են հետևյալ Attribute օբյեկտների փոփոխականները՝ attribute, title_attributes և content_attributes։

Կարող եք օգտագործել ձեր դեբագի օգնականները (kint(), dump(), dpm() և այլն)՝ տեսնելու, թե ինչ հասանելի է։ Ստորև օրինակ է՝ {{ kint(attribute) }} node.html.twig ֆայլում։

kint-attributes-object

Attribute օբյեկտի մեթոդներ

Ահա մի քանի օգտակար մեթոդներ, որոնք կարող եք օգտագործել Attribute օբյեկտի հետ․

attributes.addClass()

Ավելացնում է դասեր կամ միացնում է դրանք CSS-ի գոյություն ունեցող դասերի զանգվածին։

Միակ դաս՝

<div{{ attributes.addClass('my-class') }}></div>

Բազմաթիվ դասեր՝

{%
  set classes = [
    'red',
    'green',
  ]
%}
<div{{ attributes.addClass(classes) }}></div>

վերծանում է՝ <div class="red green"></div>։

attributes.removeClass()

Հեռացնում է CSS դաս Attribute օբյեկտից։ Օգտագործվում է addClass-ի նման։ Հիմնականում, եթե փոփոխական դասեր եք ստանում նախապատրաստման ֆունկցիայից կամ այլ տեղից։

{% set classes = [ 'red', 'green', 'blue' ] %}

<div{{ attributes.addClass(classes).removeClass('green') }}></div>

վերծանում է՝ <div class="red blue"></div>։

attribute.setAttribute($attribute, $value)

Սահմանում է հատկանիշի արժեքը՝ ըստ բանալիի։

<div{{ attributes.setAttribute('id', 'myID') }}></div>

վերծանում է՝ <div id="myID"></div>

attributes.removeAttribute($attribute)

Հեռացնում է հատկանիշ Attribute օբյեկտից։

<div{{ attributes.removeAttribute('id') }}></div>

attributes.hasClass($class)

Ստուգում է, թե արդյոք դասերի զանգվածում կա նշված CSS դասը։

{% if attributes.hasClass('myClass') %}
  {# կատարեք գործողություններ #}
{% endif %}

Twig-ում հատկանիշների ստեղծում

Նորից Drupal 8.3.x-ից հասանելի է create_attribute() Twig ֆունկցիան։ Տեսեք փոփոխությունների գրառումը՝ https://www.drupal.org/node/2818293։

Սա տրամադրում է նոր դատարկ Attribute օբյեկտ՝ հատկանիշներ ստեղծելու համար։

{% set my_attribute = create_attribute() %}
{%
  set my_classes = [
    'kittens',
    'llamas',
    'puppies',
  ]
%}
<div{{ my_attribute.addClass(my_classes).setAttribute('id', 'myUniqueId') }}>
  {{ content }}
</div>
<div{{ create_attribute({'class': ['region', 'region--header']}) }}>
  {{ content }}
</div>

Այլ օգտակար հատվածներ

Դասերը և փոփոխականները կարող են վերագրավորվել․

{% set classes = ['red', 'green', 'blue'] %}
{% set my_id = 'specific-id' %}
{% set image_src = 'https://www.drupal.org/files/powered-blue-135x42.png' %}
<img{{ attributes.addClass(classes).removeClass('green').setAttribute('id', my_id).setAttribute('src', image_src) }}>

վերծանում է՝ <img id="specific-id" class="red blue" src="https://www.drupal.org/files/powered-blue-135x42.png">

without ֆիլտրի օգտագործում

Twig-ի without ֆիլտրը հատկանիշների որոշ մասը հանում է՝

<div class="myclass {{ attributes.class }}"{{ attributes|without('class') }}></div>

Նշում․ Քանի որ addClass() ֆունկցիան ավելի անվտանգ է և հարմար, առավել հաճախ պետք է նախընտրել այն փոխարենը նման կոդի օգտագործման։

Շատ զգուշացեք հատկանիշները ձեռքով սահմանելիս Twig տեմպլեյթներում։ Համբերատարորեն օգտագործեք հատկանիշների արժեքները կրկնակի հղումներով, հակառակ դեպքում կայքը կարող է ենթարկվել XSS հարձակումների։ Twig-ը ավտոմատ կերպով էքսկեյփ անում կրկնակի հղումների պարունակությունը և պաշտպանում XSS-ից։

Այս Twig տեմպլեյթը՝

<b class={{ attributes.class }}>Hello<b>

Օգտագործողի ներմուծմամբ՝

foo onclick=alert(bar)

Արդյունքը կլինի՝

<b class=foo onclick=alert(bar)>Hello</b>

Այս Twig տեմպլեյթը՝ կրկնակի հղումներով՝

<b class="{{ attributes.class }}">Hello<b>

Արդյունքը կլինի՝

<b class="foo &quot; onclick=&quot;alert(bar)">Hello</b>

without հատկանիշի փոփոխում

{% set attributes = attributes.addClass('my-class') %}
<div{{ attributes }}></div>

 

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.