logo

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

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

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

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

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

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

Scroll

Փոխանցման կարգավորում Drupal 8–ին թարմացման ժամանակ

18/06/2025, by Ivan

Ստեղծեք ձեր նախնական փոխանցումները

  • Ստեղծեք փոխանցումներ՝ օգտագործելով drush migrate-upgrade --configure-only, ինչպես նկարագրված է «Թարմացում Drush-ի միջոցով» բաժնում։
  • Համոզվեք, որ ունեք aconfig/syncdirectory, որտեղ կպահպանվի հաջորդ քայլը։
  • Արտահանեք փոխանցումները՝ օգտագործելով drush config:export։
  • Ստեղծեք ձեր սեփական փոխանցման մոդուլը։
  • Պատճենեք միայն այն YML ֆայլերը, որոնք ցանկանում եք օգտագործել՝ config/sync գրադարանից դեպի ձեր նոր մոդուլի config/install գրադարանը, խմբագրելով դրանք՝ հեռացնելով uuid արժեքները և անհրաժեշտության դեպքում փոփոխելով id, խմբի, նշանի և այլ արժեքների սահմանումները։
  • Պատճենեք migrate_plus.migration_group.migrate_drupal_7.yml ֆայլը config/sync-ից դեպի ձեր նոր մոդուլի config/install գրադարանը՝ անվանելով այն migrate_plus.migration_group.your_module.yml. Ձեզ անհրաժեշտ կլինի խմբի ֆայլը, քանի որ այն պարունակում է տվյալների բազայի կարգավորումները։

Փոխանցման կառավարում

  • Սկսեք փոխանցումը՝ նախ օգտագործողների դերը և օգտատերերը, այնուհետև անցեք հանգույցներին։
  • Շարունակելով ֆայլեր ավելացնել config/install գրադարանը, ներբեռնեք դրանք օգտագործելով drush config-import --partial --source=modules/custom/your_module/config/install (այսի համար պետք է միացված լինի Config մոդուլը)։

Դաշտերի վերանվանում Drupal 8 թարմացման ժամանակ

Գտնենք, որ ձեր կայքում Drupal 7-ում կա A բովանդակության տեսակ foo, bar և baz դաշտերով։ Ուզում եք baz դաշտը վերանվանել zot Drupal 8-ում։ Նման փոփոխությունները համեմատաբար հեշտ է անել, երբ թարմացնում եք drush-ի միջոցով։

  • Ստեղծեք փոխանցումներ՝ օգտագործելով drush migrate-upgrade --configure-only, ինչպես վերևում նշված է։
  • Կատարեք հանգույցի տեսակի և դաշտերի փոխանցումը։ Սա կստեղծի A բովանդակության տեսակը և foo, bar, baz դաշտերը։
  • Ձեռքով ստեղծեք zot դաշտը Drupal 8-ում։ Ջնջեք baz բազան, որը ստեղծվել է փոխանցման միջոցով, բայց չեք ծրագրում օգտագործել։
  • Migrate Plus մոդուլը թույլ է տալիս իրականացնել հավելված մոդուլներ որպես կոնֆիգուրացիայի օբյեկտներ, ինչը թույլ է տալիս ճկուն ներբեռնում, փոփոխում և պահպանում։ Drush migrate-upgrade --configure-only-ով ստեղծված անհատական փոխանցումները այժմ կարելի է ստուգել՝ այցելելով admin/config/development/configuration/single/export և ընտրելով «Փոխանցում» որպես կոնֆիգուրացիայի տեսակը։ Ընտրեք հանգույցի (A) փոխանցումը։
  • Պատճենեք և տեղադրեք փոխանցումը admin/config/development/configuration/single/import, բայց փոխեք դաշտի մատուցումը այնպես, որ նշանակման դաշտը լինի field_zot, իսկ աղբյուրը field_baz: Փոխանցման սահմանման բովանդակությունը կախված կլինի դաշտի տեսակից։ Որպես փոխանցումների կառուցվածքի օրինակ կարդացեք Migrate API փաստաթղթից։
  • Փոխանցումը տեղադրելուց հետո կարող եք drush-ի միջոցով գործարկել A հանգույցի փոխանցումը և համոզվել, որ տվյալները ճիշտ տեղափոխվել են zot դաշտ։
  • Կրկնեք նույն փոփոխությունը A հանգույցի խմբագրումների փոխանցման համար, եթե նախատեսում եք տեղափոխել նաև խմբագրումները։

Այլընտրանքային մեթոդ՝ վերևում նշված ձեռքով ստեղծել zot դաշտը և փոփոխել հանգույցների փոխանցման դաշտի մատուցումը՝ կիրառելով hook_migration_plugins_alter()։

Ընթացակարգային պլագինների գրանցում

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

Migrate API-ի օրինակները օգտագործում են օգտատերերի փոխանցումը որպես օրինակ։ Օգտատերի լեզվի կոդի սահմանման համար պահանջվում է if-else տրամաբանություն, ինչպես նշված է օրինակներում, ուստի User մոդուլը տրամադրում է UserLangcode գործընթացային պլագին։

Վերևի օրինակն նկարագրում է, թե ինչպես պետք է գործընթացը պահպանել MODULE/src/Plugin/migrate/process գրադարանում և ինչպես պետք է նշել, որպեսզի այն հնարավոր լինի օգտագործել։ Օգտագործեք UserLangcode և այլ գործընթացային պլագիններ որպես օրինակներ սեփականի գրելու համար։

hook_migrate_prepare_row()

Եթե հարկավոր է սահմանել ձեր սեփական վերափոխման տրամաբանությունը, կարող եք նաև իրականացնել hook_migrate_prepare_row() ձեր մոդուլում և այնտեղ իրականացնել ձեր տրամաբանությունը։

Ինչպես նկարագրված է API-ի փաստաթղթում, hook-ն ունի երեք արգումենտ՝

API փաստաթղթում նկարագրվում է, որ կարող եք օգտագործել $migration->id()՝ ձեր տրամաբանությունը սահմանափակելու միայն ցանկալի փոխանցման համար։

Նախնական արժեքը ստանալու համար օգտագործեք Row::getSourceProperty()։ Օրինակ՝ եթե աղբյուրի տողում կա «type» հատկություն, կարող եք գրել՝ $type = $row->getSourceProperty('type');

Նոր հատկություն սահմանելու համար, որը կօգտագործվի որպես աղբյուր փոխանցման սահմանման մեջ, օգտագործեք Row::setSourceProperty()։

Տվյալների բազայի հարցումներ կատարելու համար օգտագործեք $source->getDatabase()->query(), ինչպես նշված է API-ի փաստաթղթում։

Եթե ուզում եք բաց թողնել տողը փոխանցումից, կարող եք գցել նոր արտահանում MigrateSkipRowException։

hook_migration_plugins_alter()

Փոխանցումը կարգավորելու այլ եղանակ է՝ իրագործել hook_migration_plugins_alter() ֆունկցիան ձեր մոդուլում։

API փաստաթղթով այս hook-ն ունի մեկ արգումենտ՝ ասոցատիվ զանգված բոլոր հայտնաբերված փոխանցումների մասին։ Կարող եք փոփոխել կամ հեռացնել փոխանցումներ, որոնք չեք ուզում կատարել։

Migrate Plus մոդուլը տրամադրում է PREPARE_ROW իրադարձություն

Եթե նախընտրում եք օբյեկտային մոտեցմամբ գրել ձեր պատրաստման պատասխանը prepare_row հիմնական մշակողի փոխարեն hook_migrate_prepare_row() փոխարեն, կարող եք դա անել, եթե ունեք միացված Migrate Plus մոդուլ։ Migrate Plus տրամադրում է PREPARE_ROW իրադարձություն, որի համար կարող եք գրանցել ձեր նախընտրած լսողին։ Drupal 8 API փաստաթուղթը իրադարձությունների համար։ Օրինակ՝ կարող եք դիտել Simple FB Connect մոդուլի իրադարձությունների լսողի օրինակ։

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.