Տեղեկացրեք Drupal 8-ին ձեր մոդուլի մասին .info.yml ֆայլի միջոցով
Հիմնական թեմա․ նախագծի մեթատվյալներ
.info.yml ֆայլը (հայտնի նաև որպես «info yaml ֆայլ») Drupal 8 մոդուլի, թեմայի կամ տեղադրման պրոֆիլի կարևոր բաղադրիչ է՝ նախագծի մասին մեթատվյալները պահպանելու համար։
Այս .info.yml ֆայլերը անհրաժեշտ են՝
- Տեղեկացնելու Drupal-ին մոդուլի, թեմայի կամ տեղադրման պրոֆիլի գոյության մասին։
- Տարբերակելու թեմաները, մոդուլները՝ ըստ տեսակի։
- Տրամադրելու տեղեկատվություն Drupal-ի վեբ UI-ի ադմինիստրացիոն էջերի համար։
- Նշելու մոդուլի ակտիվացման և ապաակտիվացման կառավարման չափանիշները և Drupal-ի տարբերակի հետ համատեղելիությունը։
- Ընդհանուր ադմինիստրացիոն նպատակների համար այլ կոնտեքստներում։
Լրացուցիչ տեղեկությունների համար տես վերջին API-ն InfoParserInterface.php-ի մասին։ (Սեղմեք Աղբյուրը դիտելու համար։)
Hello World
Ստորև բերված է hello_world.info.yml ֆայլը, որ մենք օգտագործելու ենք։ Եթե դուք հետևում եք օրինակին, ստեղծեք նոր hello_world.info.yml ֆայլ ձեր մոդուլի արմատային թղթապանակում և տեղադրեք այս կոդը այնտեղ։
name: Hello World Module description: Ստեղծում է էջ, որը ցույց է տալիս "Hello World": package: Custom type: module core: 8.x
Եկեք դիտարկենք յուրաքանչյուր տողը, որպեսզի հասկանանք դրանց գործառույթը։
Առաջին երեք տողերը հիմնականում օգտագործվում են ադմինիստրատորի ինտերֆեյսում, երբ օգտատերերը կարող են միացնել կամ անջատել ձեր մոդուլը։ name և description բանալիները տրամադրում են տեքստ, որը երևում է մոդուլի ադմինիստրացիոն էջում, իսկ package բանալին թույլ է տալիս խմբավորել նմանատիպ մոդուլները միասին։ Օրինակ, Core-ը օգտագործում է package: Core՝ բոլոր այն մոդուլները խմբավորելու համար, որոնք գալիս են Drupal 8-ի հետ։ Դուք կարող եք օգտագործել նաև package: Custom՝ ձեր սեփական մոդուլները խմբավորելու և գտնելու գործընթացը հեշտացնելու համար։
type բանալին, որը նոր է Drupal 8-ում, նշում է ընդլայնման տեսակը, օրինակ՝ մոդուլ, թեմա կամ պրոֆիլ։
drupal.org-ում տեղադրված մոդուլների դեպքում տարբերակի համարը լրացվում է փաթեթավորման սցենարի կողմից։ Դուք չպետք է դա նշեք ձեռքով, պարզապես բաց թողեք version տողը։
core բանալին նշում է, թե որ Drupal-ի միջուկի տարբերակի հետ է ձեր մոդուլը համատեղելի։
name, type և core պարտադիր բանալիներ են։
core_version_requirement-ի նշում
Զգուշացում
Ներկայումս DrupalCI-ն չի աջակցում այն թեստային փաթչերը, որոնք փոխում են core_version_requirement-ը։
Ձեզ անհրաժեշտ է core_version_requirement?
Միջուկային տարբերակի սահմանափակումները որոշելիս կիրառվում է հետևյալ առաջնահերթության կարգը.
- Եթե composer.json-ում նշված է միջուկային պահանջ, այն ունի առավելագույն առաջնահերթություն։
- Եթե composer.json-ում միջուկային պահանջ չկա, info.yml-ի core_version_requirement-ը ստանում է հաջորդ առաջնահերթությունը։
- Եթե info.yml-ում core_version_requirement չկա, ապա կիրառվում է հիմնական մոդուլի dependencies բաժնում նշված ցանկացած տարբերակ։
core_version_requirement-ի նշում ըստ անհրաժեշտության
Նոր core_version_requirement բանալին *.info.yml ֆայլերում՝ մոդուլների, թեմաների և պրոֆիլների համար, այժմ աջակցում է վարկածների սեմանտիկ կառավարում, որն իրականացված է Composer նախագծում։ Սա թույլ է տալիս մոդուլներին, թեմաներին և պրոֆիլներին նշել, որ դրանք համատեղելի են միաժամանակ մի քանի միջուկային տարբերակների հետ։
Օրինակ, մոդուլ, որը համատեղելի է Drupal 8-ի և Drupal 9-ի հետ, կարող է ունենալ info.yml ֆայլ հետևյալ տեսքով՝
name: My Module type: module core: 8.x core_version_requirement: ^8 || ^9
Սա նշում է, որ մոդուլը համատեղելի է Drupal 8-ի և 9-ի բոլոր տարբերակների հետ։ Core-ը պահանջվում է այստեղ, քանի որ Drupal Core-ի 8.7.7-ից հին տարբերակները չեն ճանաչում core_version_requirement բանալին։
Սակայն շատ մոդուլներ պետք է հեռացնեն հնացած կոդը, որպեսզի կարողանան աշխատել Drupal 9-ի հետ։ Այդ պատճառով դրանք չեն կարող համատեղելի լինել Drupal 8-ի բոլոր տարբերակների հետ։
Օրինակ, մոդուլ, որը համատեղելի է միայն Drupal 8.8.0-ից բարձր տարբերակների և Drupal 9-ի հետ, info.yml ֆայլում կունենա՝
name: My Module type: module core_version_requirement: ^8.8 || ^9
core բանալին չպետք է օգտագործվի այստեղ, որպեսզի Drupal-ի 8.7.7-ից հին տարբերակները չկարողանան տեղադրել մոդուլը։ Եթե միաժամանակ ավելացվի core և core_version_requirement, բացի core_version_requirement: ^8 || ^9 տարբերակից, դա կբերի սխալի։
core_version_requirement-ը չի կարող օգտագործվել միջուկի տարբերակը մինչև 8.7.7 սահմանափակելու համար։ Օրինակ՝ core_version_requirement: ^8.7 || ^9 կբերի սխալի, քանի որ ^8.7-ը ներառում է 8.7.0 տարբերակը, որը չի ճանաչում այս բանալին։
Սա կարևոր է, եթե նոր բանալին օգտագործվում է, ապա այն պետք է փորձարկված լինի Drupal 8.7.7 կամ ավելի նոր միջուկի վրա։
Լրիվ օրինակ
Բացի նախորդ օրինակում նշված հիմնական հատկություններից, կան նաև մի շարք լրացուցիչ հատկություններ։ Ահա ամբողջական օրինակ.
name: Hello World Module description: Ստեղծում է էջ, որը ցույց է տալիս "Hello World": package: Custom type: module core: 8.x dependencies: - drupal:link - drupal:views - paragraphs:paragraphs - webform:webform (>=8.x-5.x) test_dependencies: - drupal:image configure: hello_world.settings php: 5.6 hidden: true required: true # Նշում. Մի ավելացրեք 'version' կամ 'project' հատկությունները ձեռքով: # Դրանք ավտոմատ կավելացվեն drupal.org-ի փաթեթավորիչի կողմից: # version: 1.0 # project: 'hello_world'
- dependencies՝ ձեր մոդուլի կախվածությունների ցուցակն է։ Drupal core-ից կամ contributed մոդուլներից կախվածությունները պետք է նշվեն {project}:{module} ձևաչափով, որտեղ {project}՝ նախագծի անունն է Drupal.org-ի հասցեում, իսկ {module}՝ մոդուլի մեքենայական անունը։ Կախվածությունները կարող են նաև պարունակել տարբերակի սահմանափակում, օրինակ՝ webform:webform (>=8.x-5.x): Եթե ձեր մոդուլը կախված է այլ մոդուլներից կամ գրադարաններից, դրանք նույնպես պետք է հայտարարվեն մոդուլի composer.json-ում։ Եթե ունեք տեղական custom մոդուլներ, որոնք իրարից կախված են, կարող եք օգտագործել {module}:{module} (կամ {module}:{submodule}՝ ենթամոդուլների համար)։
- test_dependencies՝ այլ մոդուլների ցուցակ (նույն ձևաչափով ինչ dependencies), որոնք անհրաժեշտ են ձեր մոդուլի որոշ ավտոմատ թեստերի համար՝ Drupal-ի ավտոմատացված թեստավորման համակարգում (DrupalCI), սակայն որպես dependency պարտադիր չեն։ Ուշադրություն՝ test_dependencies փոփոխությունը պետք է պարտադիր push անեք Git-ի մեջ, քանի որ պարզապես info.yml-ում փոփոխություն ավելացնելը նույն փաթչում, ինչ նոր թեստը, բավարար չէ։ Կամ կարող եք օգտագործել Composer՝ թեստային կախվածությունները կառավարելու համար։ Տես համապատասխան փաստաթղթերը լրացուցիչ տեղեկատվության համար։
- configure՝ եթե ձեր մոդուլը տրամադրում է կարգավորումների ձև, այստեղ կարող եք նշել այդ ձևի երթուղին։ Այնուհետև այն կհայտնվի որպես հղում «Ընդարձակումներ» էջում (/admin/modules), երբ օգտագործողը բացի մանրամասները։
- php: 5.6՝ սահմանում է նվազագույն PHP տարբերակը, որը պահանջվում է ձեր մոդուլի համար։ Օգտատերերը չեն կարող միացնել մոդուլը, եթե իրենց մոտ ավելի հին տարբերակ է։ Սա օգտակար է, եթե մոդուլը օգտագործում է նոր ֆունկցիաներ, որոնք հասանելի չեն հին տարբերակներում։
- hidden: true՝ թաքցնում է մոդուլը Ընդարձակումներ էջի ցուցակից։ Օգտակար է, եթե մոդուլը միայն թեստերի համար է կամ օրինակ է API-ի կիրառման համար։ Այսպիսի մոդուլները տեսանելի դարձնելու համար կարող եք settings.php-ում ավելացնել $settings['extension_discovery_scan_tests'] = TRUE:
- required: true՝ նշանակում է, որ մոդուլը պարտադիր է և չի կարող անջատվել։
- Սահմանափակված հատկություններ, որոնք ավելացվում են Drupal-ի փաթեթավորման համակարգի կողմից։ Մի ավելացրեք դրանք ձեռքով info.yml-ում՝
version և project
.info.yml ֆայլերի debug-ման եղանակը
Մոդուլը չի ցուցադրվում admin/modules էջում
- Համոզվեք, որ info ֆայլը ունի {machine_name}.info.yml անունը և գտնվում է մոդուլի պանակի արմատում։
- Համոզվեք, որ ֆայլի ձևաչափը ճիշտ է։ Օրինակ՝ չպետք է լինեն բացատներ մինչև :, բայց պետք է լինի բացատ հետո։ Օրինակը տեսեք ստորև։
- Համոզվեք, որ ֆայլը պարունակում է հետևյալ տողը՝
type: module
- Համոզվեք, որ մոդուլի անունը սկսվում է տառով կամ underline-ով։ Ստորև PHP փաստաթղթում բերված է թույլատրելի անունների օրինակ․
Ֆունկցիաների անունները հետևում են նույն կանոններին, ինչ այլ պիտակները PHP-ում։ Թույլատրելի անունը սկսվում է տառով կամ underline-ով, որին հաջորդում են տառեր, թվեր կամ underline: regular expression-ով՝ [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
Մոդուլը ցուցադրվում է admin/modules-ում, բայց չակերտը անջատված է
- Համոզվեք, որ core բանալին ունի 8.x արժեք
core: 8.x
- Համոզվեք, որ մոդուլի բոլոր dependencies-ները առկա են։ Կարող եք ընդլայնել մոդուլի տվյալները՝ տեսնելու բացակա պահանջները։
Ուշադրություն դարձրեք, որ որոշ մոդուլներ տեղափոխվել են Drupal 8-ի միջուկից, իսկ մյուսները տեղափոխվել կամ փոխարինվել են նոր միջուկային մոդուլներով։
Մոդուլի նկարագրությունը դատարկ է
Հիշեք, որ description արժեքը օգտագործվում է նկարագրության համար։
description: Օրինակային մոդուլի նկարագրություն։
composer.json ֆայլի ավելացում
Բացի .info.yml-ում մոդուլի կախվածությունները հայտարարելուց, եթե մոդուլը տեղադրված է Drupal.org-ում և ցանկանում է թեստավորել module dependency-ների փոփոխությունները DrupalCI-ով, պետք է ունենա composer.json ֆայլ, որտեղ նշված են այդ կախվածությունները (DrupalCI-ն dependency-ների փոփոխությունները կարող է հայտնաբերել միայն composer.json-ում, ոչ թե .info կամ .info.yml ֆայլերում):
Տե՛ս նաև
- YAML
- . info-ից .info.yml փոփոխության ծանուցում
- API փաստաթուղթ
InfoParser::parse()
ֆունկցիայի համար - Drupal 7 մոդուլների info ֆայլեր
- Drupal 6 մոդուլների info ֆայլեր
- Թեմայի հայտարարում info.yml ֆայլով
- Drupal 7 մոդուլները Drupal 8 փոխարկելու ուղեցույց․ քայլ 1՝ mymodule.info-ից mymodule.info.yml
- Մոդուլները այլևս չեն կարող ավելացնել stylesheet/script իրենց info.yml-ի միջոցով
- Ավելացնել composer.json
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.