logo

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

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

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

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

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

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

Scroll

Ցուցադրման ռեժիմներ՝ դիտման ռեժիմներ և ձևեր

18/06/2025, by Ivan

Ցուցադրման ռեժիմներ

Կան ցուցադրման ռեժիմներ (գտանելի են admin/Structure/Display-Mode հասցեում)՝ թույլ տալու կոնտենտի էնտիթիների տարբեր դիտումների կամ խմբագրման ներկայացումներ։ Ցուցադրման երկու տեսակի ռեժիմներ կան՝ «դիտման ռեժիմներ» և «ձևերի ռեժիմներ»։ Այս երկու տեսակները՝ դիտման ռեժիմներն ու ձևերի ռեժիմները, հանդիսանում են «կոնֆիգուրացիոն օբյեկտների» օրինակներ։ Ահա օրինակ՝ արտահանված դիտման ռեժիմից։

uuid: 15dc7aa9-13fd-4412-9c06-06d09f915d08
langcode: en
status: false
dependencies:
  module:
    - node
id: node.full
label: 'Լրիվ կոնտենտ'
targetEntityType: node
cache: true

Հղում՝ core.entity_view_mode.node.full.yml

Հիմնական հատկությունը, որին պետք է ուշադրություն դարձնել, targetEntityType-ն է։ Յուրաքանչյուր ցուցադրման ռեժիմ (դիտման կամ ձևի ռեժիմ) կապված է կոնտենտի մեկ և միայն մեկ էնտիթի տեսակի հետ։ Կան ավանդական պիտակներ, որոնք օգտագործվում են բազմաթիվ ցուցադրման ռեժիմների համար։ Օրինակ՝ Drupal Core-ի ստանդարտ պրոֆիլը օգտագործում է «Լրիվ» պիտակը դիտման ռեժիմների համար՝ նոդի, օգտվողների բլոկների և մեկնաբանությունների էնտիթի տեսակների համար։

Դիտման և ցուցադրման ռեժիմներ

  • Կառավարվում է համատեղ՝ /admin/structure/display-mode/view հասցեում
  • Միացված է յուրաքանչյուր փաթեթի համար «Հարմարեցված ցուցադրման պարամետրեր» բաժնում՝ նման URL-ներով՝ /admin/structure/types/manage/page/display (որտեղ «page»-ը նոդի էնտիթի փաթեթն է)
  • Կարգավորվում է դիտման ռեժիմի համար յուրաքանչյուր փաթեթի դեպքում URL-ներով՝ օրինակ՝ /admin/structure/types/manage/page/display/teaser (որտեղ «page»-ը նոդի էնտիթի փաթեթն է, իսկ «teaser»-ը դիտման ռեժիմը)

Դիտման ռեժիմների հասկացությունը գոյություն է ունեցել Drupal 8-ից առաջ։ Դրանք գտնվել են Drupal 7-ում։ Drupal 6-ում էլ եղել է «կառուցման ռեժիմների» հասկացություն։ Դիտման ռեժիմները թույլ են տալիս Drupal-ի կայքի կառուցման գործիքներին՝ ինչպիսին են Entity Reference դաշտերը, հարցումներ կատարել էնտիթի վերաբերյալ հատուկ ձևով։ Օրինակ՝ «song» և «artist» հանդիսանում են նոդի տեսակներ, և երգը պարունակում է հղում կատարող դաշտ «artist»-ին։ Երգի նոդի «լրիվ» դիտման ռեժիմը կարող է պահանջվել ցույց տալ «artist»-ի նոդի «тизер» (զանգալի) ռեժիմը։ Այս օրինակով՝ «тизер»-ը հանդիսանում է «artist» նոդի դիտման ռեժիմ, իսկ «լրիվ»-ը՝ երգի ռեժիմը։

Սովորաբար, եթե կայքի մշակողը ցանկանում է ցույց տալ «artist» նոդը «тизер» ռեժիմով, ապա նա կկարգավորի կոնֆիգուրացիա, հատուկ այդ «artist» և «тизер» ռեժիմին։ Դա կարելի է անել՝ անցնելով «Ցուցադրման կառավարում» ներդիրին էնտիթի փաթեթի կարգավորման էջում։ Drupal Core-ի ստանդարտ պրոֆիլում այդ էջի օրինակն է /admin/structure/types/manage/article/display

Այդ էջում կայքի մշակողը կարող է կարգավորել դաշտերի հարմարեցված ցուցադրման պարամետրերը փաթեթի համար (դաշտերի կարգը և դաշտի ձևաչափավորիչների օգտագործումը) յուրաքանչյուր դիտման ռեժիմի համար։ Ոչ բոլոր դիտման ռեժիմները պետք է ունենան հատուկ պարամետրեր բոլոր փաթեթների համար։ Այս օրինակով միայն «RSS» և «Տիզեր» ռեժիմները ունեն իրենց հատուկ պարամետրերը։ Մյուս բոլոր ռեժիմները վերադառնում են լռելյայն կոնֆիգուրացիային։ Էնտիթի տեսակների և դիտման ռեժիմի միջև ասոցացիան կոչվում է դիտման ցուցադրություն։ @see EntityViewDisplayInterface

d8-view-modes

Ձևերի ռեժիմներ և (ձևի) օպերացիաներ

  • Կառավարվում է համատեղ՝ /admin/structure/display-mode/form հասցեում
  • Միացված է յուրաքանչյուր փաթեթի համար URL-ներում, օրինակ՝ /admin/structure/types/manage/page/form-display (որտեղ «page»-ը նոդի էնտիթի փաթեթն է)
  • Կարգավորվում է ձևի ռեժիմի համար յուրաքանչյուր փաթեթի դեպքում URL-ներով՝ օրինակ՝ /admin/structure/types/manage/page/form-display/simple (որտեղ «page»-ը նոդի էնտիթի փաթեթն է, իսկ «simple»-ը ձևի ռեժիմն է)

Ինչպես դիտման ռեժիմները, ձևի ռեժիմները թույլ են տալիս ստեղծել դաշտերի տարբեր կոնֆիգուրացիաներ նույն էնտիթի փաթեթի համար։ Ձևի ռեժիմները թույլ են տալիս տարբեր դաշտերի վիջեթների կարգավորումներ, ինչպես դիտման ռեժիմները՝ տարբեր դաշտերի ձևաչափավորիչների կարգավորումներ։

 Drupal 7-ում դաշտն ու դաշտի վիջեթը տեղադրված էին ցանկացած կոնտենտի տեսակի «Դաշտերի կառավարում» ներդիրում։ Հիմա դրանք բաժանվել են երկու ներդիրների՝ «Դաշտերի կառավարում» և «Ձևի ցուցադրման կառավարում»։ Սա հնարավորություն է տալիս ավելի շատ ճկունություն, թե ինչպես կցուցադրվի ձևը՝ երբ ինչ-որ մեկը դիտում կամ խմբագրում է կոնտենտ։ «Ցուցադրման կառավարում» ներդիրը մնացել է ինչպես Drupal 7-ում։ Կոնտենտի տեսակների զատ, կարող ենք կառավարել նաև դիտման ռեժիմները այլ էնտիթի տեսակների համար, ինչպիսիք են օգտվողները, տաքսոնոմիան, մեկնաբանությունները և հարմարեցված բլոկները։

Բացի ձևերի ռեժիմներից, ձևերի օպերացիաները թույլ են տալիս սահմանել, թե որ դասերն օգտագործվեն որոշակի ձևերի համար, օրինակ՝ նոդի ջնջման ձև։ Նոդի ջնջման համար օգտագործվող դասը տարբերվում է նոդի խմբագրման դասից։ Օպերացիաները սահմանվում են օբյեկտի անշանագրություններում։

Ահա օրինակ, որը ցույց է տալիս 2 հարմարեցված ձևի օպերացիա, ինչպես նաև «լռելյայն» ձևի ռեժիմը նույն MyEntityForm-ում։ Համոզվեք, որ այս ձևը ժառանգում է ContentEntityForm։

/**
 * @ContentEntityType(
 *   id = "myentity",
 *   handlers = {
 *     "form" = {
 *       "default" = "Drupal\myentity\Form\MyEntityForm",
 *       "add" = "Drupal\myentity\Form\MyEntityForm",
 *       "edit" = "Drupal\myentity\Form\MyEntityForm",
 *       "delete" = "Drupal\myentity\Form\MyEntityDeleteForm",
 *     },
 *   },
 * )
 */

Եթե անհրաժեշտ է ավելացնել կամ փոփոխել գոյություն ունեցող էնտիթիների ձևերի օպերացիաները, կարող եք օգտագործել hook_entity_type_build և hook_entity_type_alter։

Ներկայում պետք է բացահայտ կարգավորել գործողությունը օգտագործվող ձևի ռեժիմի համար։ Անհամեմատաբար դիտման ռեժիմների (որոնք վերադարձնում են լռելյայն ցուցադրման կոնֆիգուրացիան, եթե տվյալ ռեժիմի համար չկա կոնֆիգուրացիա) հետ, ձևերի ռեժիմները լռելյայն չեն օգտագործի «լռելյային» օպերացիա։ Սա կարելի է համարել սխալ։ Տեսեք #2511720․ Թույլատրել ձևերի ռեժիմներին օգտագործել լռելյայն օպերացիա, եթե ձևի օպերացիան հստակ չի սահմանված։

Ձևը ցուցադրելու համար հարմարեցված ձևի ռեժիմով, օգտագործեք _entity_form ձեր երթուղում։ Օրինակ՝ հարմարեցված MyEntity խմբագրման ձևը ցուցադրելու համար օգտագործեք հետևյալ երթուղին.

entity.myentity.edit_form:
 path: '/myentity/{myentity}/edit'
 defaults:
   _entity_form: myentity.edit
   _title: 'Խմբագրել MyEntity'
 requirements:
   _permission: 'edit myentity entities' 

Այլ օրինակ՝

Հաճախ անհրաժեշտ է, որ օգտվողի գրանցման ձևը չցուցադրի բոլոր հարմարեցված դաշտերը։ Երբ օգտվողը գրանցվի, նա կունենա մուտք խմբագրելու պրոֆիլի ձևը՝ լրացուցիչ դաշտերով։ Ահա նման կոնֆիգուրացիայի օրինակ՝

  • Սեղմեք «Ավելացնել դաշտ» հասցեում /admin/config/people/account/fields
  • Հաջորդ էջում ընտրեք դաշտի տեսակ՝ Ցուցակ (Տեքստ)
  • Տվեք պիտակ՝ «Բաժանորդագրության ցուցակ»
  • Սեղմեք «Պահպանել և շարունակել»
  • Լրացրեք թույլատրելի արժեքների ցուցակը, օրինակ՝

                     1 | Լուրեր
                     2 | Կարևոր հայտարարություններ
                     3 | Առաջարկներ, Զեղչեր
                     4 | Գործընկերային հաղորդագրություններ

  • Սեղմեք «Պահպանել»
  • Կատարեք պարտադիր դաշտ
  • Ընտրեք բոլոր չորս արժեքները լռելյայն, սեղմեք «Պահպանել»
  • Հաջորդը սեղմեք «Ձևի ցուցադրման կառավարում» ներդիր
  • Դաշտերի ցուցակի ներքևում բացեք «Հարմարեցված ցուցադրման պարամետրեր» բաժինը
  • «Օգտագործել հարմարեցված ցուցադրման պարամետրերը հետևյալ ձևերի ռեժիմների համար» դաշտում միացրեք «Գրանցում» և սեղմեք «Պահպանել»
  • Հիմա կունենաք երկրորդ ներդիր՝ «Գրանցում» անվամբ
  • Անջատեք «Բաժանորդագրության ցուցակ» դաշտը՝ քաշելով այն «Անջատված» բաժին։ Սեղմեք պահպանել։
  • Գնացեք «Ցուցադրման կառավարում» ներդիր և համոզվեք, որ «Բաժանորդագրության ցուցակ» դաշտը միացված է։

Դուրս եկեք կայքից և այցելեք գրանցման ձևը։ Բաժանորդագրության ցուցակը չի երևա։
Մուտք գործելուց հետո բաժանորդագրության դաշտը կլինի հասանելի պրոֆիլի թարմացման ձևում։