logo

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

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

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

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

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

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

Scroll

Drupal Twig-ի փոխարկման հրահանգներ (tpl.php-ից html.twig)

19/06/2025, by Ivan

Menu

Այս փաստաթուղթը օգտագործվել է Drupal 8-ի Twig փոխարկման գործընթացի մեծ մասի ընթացքում և կարող է օգտակար լինել նաև ձեր սեփական թեմաները և մոդուլները թարմացնելու համար՝ օգտագործելով Twig տեմպլեյթ շարժիչը Drupal 8-ում։

Նշում․ Twig-ով բոլոր աշխատանքները հիմա կատարվում են Drupal արմատային խնդրների հերթում։ Օգտագործեք միայն Twig փոխարկման sandbox-ը նախօրոք փոխարկված տեմպլեյթներն ու ֆունկցիաները գտնելու համար։

Հիմնական մասնակցողների քայլերը՝

  • Գտեք հիմնական խնդիրները՝ ուղղումներ հրապարակելու և դիտելու համար։
  • Չկիրառել патчեր sandbox-ին
  • Չստեղծել патчեր sandbox-ի համար։
  • Օգտագործել sandbox-ը միայն թեստավորման և/կամ նախօրոք փոխարկված կոդ ստանալու համար։
  • Դիտեք այս YouTube տեսանյութը՝ այս գործընթացի համառոտ ակնարկի համար։

 

Կարգավորում

Կլոնավորեք Drupal 8.0.x-ը՝

git clone -b 8.0.x http://git.drupal.org/project/drupal.git d8

Ընթացիկ Drupal-ի աշխատող տարբերակը կտեղադրվի «d8» թղթապանակում (անվանեք ինչպես ցանկանաք)

1. Տեղադրեք Drupal սովորականի նման (օգտագործելով Սկզբնական տեղադրման պրոֆիլը):
2. services.yml-ում ավելացրեք Twig-ի բոլոր 3 պարամետրերը (debugging, cache, auto_reload)՝ True արժեքով։

Փոխարկում

Թեմայի ֆունկցիաներ

Փոխարկել թեմայի ֆունկցիան տեմպլեյթի ֆայլի և նախապատրաստման ֆունկցիայի

1. Վճռեք ֆայլը, որտեղից գալիս է ձեր թեման (theme.inc? Core/modules/color/?)
2. Ստեղծեք X.html.twig տեմպլեյթային ֆայլ ձեր թեմայի ֆունկցիայի համար՝
                     - Անվանեք նոր ֆայլը համապատասխանաբար
                     - Հեռացրեք theme_ նախածանցը ֆունկցիայի անունից և փոխարինեք ֆայլի վերջը .html.twig-ով
                     - Փոխարինեք ստորակետերը («_») գծիկներով («-»):
                     - Օրինակներ՝
                            * theme_link() դառնում է link.html.twig
                            * theme_user_signature() դառնում է user-signature.html.twig

3. Տեղադրեք նոր Twig տեմպլեյթը լիարժեք թեմայի տեմպլեյթների պանակում (sandbox-ում):
                     - Եթե ֆունկցիան գալիս է որոշակի մոդուլից, օրինակ՝ stark/templates/comment և այլն։
                     - Եթե ֆունկցիան գալիս է theme.inc-ից, տեղադրեք stark/templates/theme.inc
                     - Եթե ֆունկցիան form.inc-ից է, stark/templates/form.inc
4. Գնացեք Drupal 8 API-ի տեքստին և գտեք ձեր ֆունկցիան։
                     - (բոլոր ֆունկցիաների հղումները կան էլեկտրոնային աղյուսակում)
5. ավելացրեք PHP ոճի դոկբլոկ ֆայլի վերևում Twig մեկնաբանություններով {# #}
                     - Գտեք @file տողը ֆայլի վերևում։
                     - Կպցրեք ֆունկցիայի հայտարարությունը @file-ից ստորին հատվածում։ Փոխել «Վերադարձնում է HTML ...» որպես «Նախնական թեմայի իրականացում ...»՝ այնպես, որ տեղավորվի մեկ տողում։
                     - Ավելացրեք «Ստացվող փոփոխականներ:» տողը (փոխարինեք @param փոփոխականները)
                     - Փոխանցեք փոփոխականները, որոնք նշված են API-ի «Parameters» բաժնում։
                     - Հեռացրեք @see template_preprocess(), եթե կա։
                     - Ավելացրեք @see template_preprocess_THEME_HOOK() տողը։
                     - Ավելացրեք @ingroup թեմատիկ տողը (տես ստորև՝ դոկբլոկի օրինակ)

6. Կպցրեք ձեր ֆունկցիայի սկզբնական կոդը դոկբլոկից ներքև (տես օրինակ):
7. Փոխարկեք PHP կոդը հիմնականում HTML և տպագրական օպերատորների՝
                     - Հեռացրեք PHP կոդը HTML-ից, օրինակներ՝
                            * function whatever() {
                            * // …
                            * return $output; }
                    - Հեռացրեք PHP տպագրական օպերատորները և փոխարինեք {{}}-ով
                            * Փոխակերպեք $variables-ի անունները պարզ անունների՝ $variable['title'] դառնում է {{title}}
                            * Մասիվի սինտաքսը փոխարինեք կետային սինտաքսով՝ $variable['page']['tabs'] դառնում է {{page.tabs}}
                    - Հեռացրեք PHP տրամաբանությունը և փոխարինեք տեգերի {%%} սինտաքսով՝
                            * <?php foreach $items as $item?> դառնում է {% for item in items %}
                    - PHP մեկնաբանությունները փոխարինեք Twig մեկնաբանություններով՝ {# #}
                    - Փոխարինեք t() ֆունկցիան տեքստերի վրա Twig ֆիլտրով՝ {{ 'տեքստ'|t }}
                    - Բոլոր PHP տրամաբանությունը տեղափոխեք նախապատրաստման ֆունկցիա (տես ներքևի հրահանգները)

8. Եթե նկատեք, որ կարող եք բարելավել ինչ-որ բան, օրինակ՝ միավորել հավելյալ տեմպլեյթները մեկի մեջ, բարելավել նշումը կամ փոփոխականների անունները, նշեք դա այս էլեկտրոնային աղյուսակում կամ ստեղծեք խնդրի գրառում մեր sandbox-ում։ Օրինակ՝ http://drupal.org/node/180591

Փոխարկում կամ միավորում նախապատրաստման ֆունկցիաներում

ՆՇՈՒՄՆԵՐ․

  • Նախապատրաստման ֆունկցիաները կփոխարինեն բոլոր թեմայի ֆունկցիաները։
  • Եթե ձեր տեմպլեյթ ֆայլում կա PHP տրամաբանություն, որը ազդում է տպագրվող փոփոխականների վրա, այն պետք է տեղափոխել նախապատրաստման ֆունկցիա։
  • Եթե ձեր տեմպլեյթը սկսվել է որպես թեմայի ֆունկցիա, այդ թեմայի ֆունկցիան պետք է փոխարկվի նախապատրաստման ֆունկցիայի։
  • Եթե որոշ թեմայի ֆունկցիաներ արդեն ունեն նախապատրաստման ֆունկցիաներ, տեմպլեյթների փոփոխականների մշակման կոդը պետք է տեղափոխվի նախապատրաստման ֆունկցիաներ։
  • Չավելացրեք ձեր hook_theme իրագործմանը տող, որը Drupal-ին կասի օգտագործել տեմպլեյթ ֆայլը թեմայի ֆունկցիայի փոխարեն։

 

ՀՐԱՄԱՆԱՎՈՐՈՒԹՅՈՒՆՆԵՐ․

  • Փոխարինեք theme_YOURFUNCTION անունը template_preprocess_YOURFUNCTION-ով։
  • Հղման միջոցով փոխանցեք $variables՝ ավելացնելով &- նշանը, օրինակ՝ theme_select($variable) դառնում է template_preprocess_select(&$variable)։
  • Խմբագրեք ֆունկցիան՝ մշակելու միայն փոփոխականների տրամաբանությունը, հեռացրեք ցանկացած նշում (օրինակ՝ $output)։

Եթե ձեր տեմպլեյթներում բացակայում են տեգեր (branch functions)...

Եթե ձեզ հարկավոր է Twig տեմպլեյթում ֆիլտրի կամ ֆունկցիայի հասանելիություն, որը դեռ չի գործում, ավելացրեք այն այս բաց թողարկման։ Ուշադրություն դարձրեք, որ մեծամասնությունը PHP կամ Drupal ֆունկցիաներից պետք է տեղափոխվեն նախապատրաստման ֆունկցիաներ։ Միայն եթե կարծում եք, որ թեմայի մշակողը պետք է ունենա այս ֆունկցիային ուղղակի հասանելիություն, այն թողեք տեմպլեյթում։

Պարզ փոխարկման օրինակ (theme_link)

PHP կոդ

function theme_link($variables) {
  return '<a href="' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '"></a>';
}

Twig տեմպլեյթ (ֆայլի անունը՝ link.html.twig)

{# /**
 * @file
 * Նախնական թեմայի իրականացում հղման ցուցադրման համար.
 *
 * Ստացվող փոփոխականներ:
 * - text: Հղման տեքստը.
 * - url: Լինկի ամբողջական URL-ը, օրինակ՝ "/node/34" կամ "http://example.com/foo".
 * - attributes: Տարրին առկայ HTML հատկությունները.
 *
 * @see template_preprocess_link()
 *
 * @ingroup themeable
 */ #}
<a href="{{ url }}" class="{{ attributes.class }}"{{ attributes }}>{{ text }}</a>

system.module-ում փոփոխություններ (նախապատրաստման ֆունկցիա)

/**
 * Նախապատրաստում է փոփոխականները հղման տեմպլեյթի համար։
 *
 * Նախնական տեմպլեյթ՝ link.html.twig։
 *
 * @param array $variables
 *  Համակարգված զանգված, որը պարունակում է՝
 *  - text: Թարգմանված հղման տեքստը։
 *  - path: Ներքին ուղի կամ արտաքին URL։
 *  - options: Ավելացված ընտրանքների զանգված։
 */
function template_preprocess_link(&$variables) {
  $variables['url'] = url($variables['path'], $variables['options']);
}

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

Անդրեյ Պոդանենկո՝ http://drupal.org/node/1783130 ինչպես փոփոխականների վերանվանումը
jen: Օգտագործեք Twig մեկնաբանությունների բացման և փակման նշանները {# և #}.
jen: Twig տեգերի մեկնաբանությունները համաժամեցրեք PHP-ի doxygen մեկնաբանությունների հետ:
jen: պատճենեք և կպցրեք այս հայտարարությունը api.drupal.org-ից:
Ջեյմս Ուիլսոն՝ Կիսվեք, որ երբ պատճենում եք ֆունկցիայի հայտարարությունը, փոխեք "Վերադարձնում է HTML ..." տողը որպես "Նախնական թեմայի իրականացում ...":
jen: պատճենեք «Պարամետրերը» api.drupal.org-ից:
Ջեյմս Ուիլսոն՝ Հեռացրեք $ նշանը փոփոխականների անուններից, եթե ցանկանում եք խոսել նրանց մասին դոկբլոկում, օգտագործեք պարզապես եզակի նշաններ։ [Տես http://drupal.org/node/1804710 քննարկումը]
jen: Twig-ում տպեք փոփոխականները {{}} սինտաքսով:
jen: «attributes» դաշտերը հնարավորություն են տալիս ուղղակի հասանելի լինել class-ներին:
jen: url() ֆունկցիաներ մեծ մասը պետք է հեռացվեն տեմպլեյթից և ավելացվեն նախապատրաստման ֆունկցիայում։

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.