logo

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

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

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

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

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

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

Scroll

Twig լավագույն փորձառություններ՝ նախնական մշակումների ֆունկցիաներ և կաղապարներ

19/06/2025, by Ivan

Menu

Դրա համար, որպեսզի Drupal 8 թեման հնարավորինս արդյունավետ լինի և Twig կաղապարներում ավելի շատ հարմարեցման հնարավորություններ ունենաք, հետևեք հետևյալ խորհուրդներին․

Այս ուղեցույցը գրվել է օգնելու Drupal ծրագրավորողներին, ովքեր կարող են ունենալ փորձ Drupal 7-ում և փորձում են հեռացնել theme() կամ drupal_render() նման ֆունկցիաները, որոնք Drupal 8+-ում այլևս չպետք է օգտագործվեն։ «Նախկինում» օրինակները հիմնականում Drupal 7-ի կոդի ոճով են։

Վերադարձնում ենք ռենդերային զանգվածներ նախնական մշակումների ֆունկցիաներից

Միշտ վերադարձրեք ռենդերային զանգվածներ՝ նախնական մշակումների ֆունկցիաներում theme() կամ drupal_render() կանչելու փոխարեն։

Twig-ը ավտոմատ կերպով կցուցադրի ամեն ինչ, ուստի drupal_render() կամ theme() կանչելու անհրաժեշտություն չկա նախնական մշակումում։ Փոխարենը ռենդերային զանգվածները պետք է փոխանցվեն կաղապարին, ինչը շատ ավելի շատ հարմարեցումներ է թույլ տալիս՝ չնայած արդեն պատրաստի HTML-ի փոխարեն։

theme() հեռացնելը նախնական մշակումում՝

// Նախկինում՝ HTML-ի ռենդերացված տողի փոխանցում կաղապարին։
$variables['table'] = theme('table', ['header' => $header, 'rows' => $rows]);

// Հետո՝ ռենդերային զանգվածի փոխանցում կաղապարին։
$variables['table'] = [
  '#theme' => 'table',
  '#header' => $header,
  '#rows' => $rows,
];

drupal_render() հեռացնելը նախնական մշակումից պարզապես կանչի հեռացումն է․

// Նախկինում, ավելորդ drupal_render() կանչ։
$variables['teaser'] = drupal_render($node_teaser);

// Հետո, drupal_render() կանչը հեռացված է։
$variables['teaser'] = $node_teaser;

Համընդհանուր դեպքն այն է, որ drupal_render()-ը կանչվում էր տվյալների աղյուսակում ավելացնելու ժամանակ։

// Նախկինում, ավելորդ drupal_render() կանչ։
$row[] = drupal_render($display['title']);

// Հետո, drupal_render() կանչը հեռացված է։  
$row[]['data'] = $display['title'];

Կոչերի ֆիլտրեր և օգտակար ֆունկցիաներ կաղապարներում

Չնայած ռենդերային զանգվածները տրամադրում են հասանելի, փոփոխվող կառուցվածք տվյալների համար կաղապարներին փոխանցելու ճանապարհին, ոչ բոլոր փոփոխականներն են պահանջում ռենդերային զանգվածներ։ Թեմաների ծրագրավորողները պետք է Twig կաղապարներում կանչեն ֆիլտրեր, ինչպիսիք են t, և օգտակար ֆունկցիաներ, ինչպիսիք են url(), որպեսզի չպատրաստեն ոչ մշակված տվյալները նախնական մշակումում։ Այս ֆունկցիաների կանչը Twig կաղապարում, այլ ոչ թե նախնական մշակումում, կարող է նվազեցնել ֆունկցիայի կանչերի քանակը, քանի որ որոշ փոփոխականներ կարող են ընդհանրապես չտպվել կաղապարում։

Նախկինում՝

Նախնական մշակումում՝

$variables['no_content_text'] = t('You have not created any content types yet. Go to the <a href="@create-content">content type creation page</a> to add a new content type.', array('@create-content' => url('admin/structure/types/add')));

Կաղապարում՝

<p>{{ no_content_text }}</p>

Հետո՝

Կաղապարում՝

<p>{{ 'You have not created any content types yet. Go to the <a href="@create-content">content type creation page</a> to add a new content type.'|t({'@create-content': url('admin/structure/types/add')}) }}</p>

Դրսևորել / թաքցնել և հեռացնել drupal_render_children և element_children

Եթե նախնական կաղապարում hide() կանչվել է, իսկ drupal_render_children օգտագործվել է տվյալների մնացած մասը ռենդերելու համար, ապա պետք է բոլոր այս մասը բաժանել առանձին փոփոխականների նախնական մշակումում։

Նախկինում (PHPTemplate ֆայլ)


Օգտագործեք Twig-ի «without» ֆիլտրը՝ որոշ տարրեր թաքցնելու համար։ Կարող եք օգտագործել այն ըստ անհրաժեշտության։

Հետո (Twig կաղապար)

{{ form|without('advanced', 'actions') }}
{{ form.advanced }}

Այլընտրանքային մեթոդ (առայժմ անհրաժեշտ չէ):

Նախապես մշակեք ամեն բան առանձին փոփոխականների և փոխանցեք դրանք կաղապարին։ Ինքներդ կարող եք բաժանել և տպել բովանդակությունը այնպես, ինչպես նախատեսված է կաղապարում։

Նախկինում (նախնական մշակում)

function template_preprocess_node_edit_form(&$variables) {
  $form = $variables['form'];
  
  // @todo Update this once drupal.org/node/1920886 is resolved.
  $variables['advanced'] = $form['advanced'];
  $variables['actions'] = $form['actions'];
  unset($form['advanced'], $form['actions']);
  $variables['form'] = drupal_render_children($form);
}

Հետո (Twig կաղապար)

{{ form }}
{{ advanced }}

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.