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

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

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

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

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

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

Scroll

9.10.2. Drupal Fields API: Դաշտերի ձևաչափիչ. ցուցադրել տվյալների դաշտերը էջում

19/04/2025, by Ivan

Menu

Այս հոդվածում կքննարկենք դաշտի ցուցադրման ձևավորիչները (Field Formatters), որոնք թույլ են տալիս խմբագրել դաշտերի ցուցադրումը և դրանք տեսանելի դարձնել էջում։

Նախորդ հոդվածներում մենք ստեղծել էինք Link դաշտի տիպ։ Այս հոդվածում կտեսնենք, թե ինչպես են այդ դաշտերը ցուցադրվում էջում և որ դասն է դրա համար պատասխանատու։

Յուրաքանչյուր դաշտ, որը դուք ավելացնում եք Drupal-ում, կարող է ցուցադրվել էջում և դրա կարգավորումները կարող եք փոխել Manage display էջում։

manage display

Format սյունակում կարող եք ընտրել, թե ինչպես պետք է դաշտը ցուցադրվի։ Այս սյունակը ձևավորվում է Field Formatter դասերի հիման վրա։ Եկեք դիտարկենք Link մոդուլի դասը, որը պատասխանատու է հղման ցուցադրման համար՝

core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php

Դասի վերնագրում նշվում է, թե որ դաշտի տիպին է պատկանում տվյալ ձևավորիչը։

/**
 * Plugin implementation of the 'link' formatter.
 *
 * @FieldFormatter(
 *   id = "link",
 *   label = @Translation("Link"),
 *   field_types = {
 *     "link"
 *   }
 * )
 */

Այս ֆայլում մեզ հիմնականում հետաքրքրում է viewElements() մեթոդը, որը պատասխանատու է տվյալների էջում արտածման համար։ Կարևոր է նկատել, որ ձևավորիչը հարցում չի ուղարկում տվյալների շտեմարան, այլ ստանում է տվյալները $items փոփոխականի միջոցով։ Այդ $items փոփոխականը պարունակում է արդեն վերամշակված տվյալները՝ բերված համապատասխան entity-ից։

Այսպիսով, մենք ունենք պատասխանատվության բաժանում՝ Field Widget-ը՝ տվյալների մուտքագրման համար, Field Storage-ը՝ տվյալների պահման համար, և Field Formatter-ը՝ տվյալների արտածման համար։

Սա շատ հարմար է քեշավորման տարբեր մակարդակների և տարբեր ֆունկցիոնալության ներդրման համար։ Օրինակ՝ եթե փոխվում է միայն դաշտի արտածման ձևը, ապա node-երի cache-ը վերատեղադրելու կարիք չկա, քանի որ տվյալները չեն փոխվել, փոխվել է միայն դրանց ցուցադրումը։

LinkFormatter դասը ունի նաև settingsForm() մեթոդ, որը պատասխանատու է Manage display էջում արտածման կարգավորումների ձևի համար։ Այս ձևում կարելի է ավելացնել կարգավորման դաշտեր Form API-ի միջոցով և պահպանել տվյալ կարգավորումները configuration-ում։

Link մոդուլում կա ևս մեկ ձևավորիչ՝

core/modules/link/src/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php

Այն ժառանգվում է LinkFormatter-ից, սակայն տարբերությունը այն է, որ այս ձևավորիչի համար միացված է առանձին տեմփլեյթ՝

core/modules/link/templates/link-formatter-link-separate.html.twig

Այսպիսով, դաշտի HTML արտածումը տեղի է ունենում twig տեմփլեյթի միջոցով։ Իսկ ձևավորիչը միայն կազմում է $element զանգվածը, որտեղ $delta-ի միջոցով գրվում են բազմակի արժեք ունեցող դաշտի յուրաքանչյուր արժեքի տվյալները։

Ինչպես տեսնում եք՝ Drupal-ի Field API-ն բավականին պարզ և հարմար է օգտագործման համար։ Հաջորդ հոդվածում մենք կգրենք մեր սեփական դաշտի տեսակ՝ իր Storage, Widget և Formatter-ով։