9.9. Drupal-ում կոնֆիգուրացիայի կառավարում: Active, համաժամեցման կոնֆիգուրացիա, DEV-ից LIVE կոնֆիգուրացիաների փոխանցում:
Կոնֆիգուրացիան (Configuration) Drupal-ում կայքի բոլոր պարամետրերի՝ բովանդակության տեսակների, դաշտերի, կարգավորումների ձևերի և փոփոխականների հիմքն է։ Կոնֆիգուրացիայի օգնությամբ մենք կարող ենք փոփոխությունները փոխանցել մեկ կայքից մյուսը, միաժամանակ զարգացնել տարբեր ֆիչերներ՝ առանց միմյանց խանգարելու։
Կոնֆիգուրացիաները կարելի է արտահանել YML ֆայլերի մեջ և ավելացնել Git-ի պահոցում, այսինքն՝ դուք կարող եք կայքի կարգավորումների փոփոխությունները կոմիտել և փոխանցել դրանք Dev կամ Live։ Drupal-ում կոնֆիգուրացիայի գաղափարը նման է Features մոդուլի աշխատանքին՝
https://www.drupal.org/project/features
Բացի այն, որ Features-ը չէր ինտեգրված բոլոր մոդուլների հետ, հնարավոր չէր կայքի բոլոր կարգավորումները փոխանցել դրա միջոցով։ Drupal-ի Configuration համակարգը աշխատում է բոլոր կարգավորումների հետ և թույլ է տալիս ամեն ինչ արտահանել ֆայլերով։
Drupal-ի տեղադրման ժամանակ ստեղծվում է կոնֆիգուրացիաների արտահանման թղթապանակ։ Լռելյայն այն գտնվում է sites/default/files թղթապանակում՝ պատահական երկար անունով թղթապանակի տեսքով՝
Թղթապանակի անունը պատահական է, քանի որ այն տեղակայված է files թղթապանակում, որը հանրային է և ունի 777 իրավունք։ Այդ երկար անունը կանխում է, որ կոնֆիգ ֆայլերի անունը կռահեն։ Բանն այն է, որ կոնֆիգերը կարող են պարունակել API, Solr, SMTP մուտքի տվյալներ, և այդ ինֆորմացիան պետք է թաքցված լինի։ Մենք կարող ենք փոփոխել կոնֆիգ թղթապանակի տեղադրությունը settings.php ֆայլի միջոցով՝
$config_directories['sync'] = 'sites/default/files/config__RPFDnw0- VygzmxgHiXPoXGNKYmjVi3mDZmP5exZX8tRleV9jXG6ZECaPRaxekelYsMCF42HwA/sync';
Sync թղթապանակը կօգտագործվի կոնֆիգուրացիաների փոխանցման համար։ Drupal-ը լռելյայն պահում է կոնֆիգերը տվյալների բազայում՝ օգտագործելով ակտիվ կոնֆիգուրացիան։ Կարելի է նաև պահել ակտիվ կոնֆիգերը ֆայլերով, բայց ավելի ճիշտ է թողնել տվյալների բազայում՝ արագ աշխատանքի համար։ Դուք կարող եք config աղյուսակը դիտել PhpMyAdmin կամ Adminer-ի միջոցով՝
Այստեղ պահվում են կոնֆիգուրացիաների սերիալիզացված զանգվածները։
Սովորաբար sync թղթապանակը պահվում է դուրս files թղթապանակից, քանի որ files-ը Git-ում չի պահվում։ Փոխենք կոնֆիգի տեղադրությունը՝
$config_directories['sync'] = 'config/sync';
Այժմ կարող ենք ավելացնել մեր կոնֆիգերը Git-ում։ Կարելի է դրանք արտահանել ձեռքով՝
/admin/config/development/configuration/full/export
Configuration → Configuration synchronization → Export
Սեղմելով Export կոճակը՝ Drupal-ը կարտահանի կոնֆիգերի արխիվ։ Այս ֆայլերը կարելի է ավելացնել Git-ում՝
Ձեռքով կոնֆիգերի արտահանումը միշտ չէ որ հաջող է լինում։ Երբ կան բազմաթիվ կոնֆիգեր, արտահանումը կարող է ընդհատվել։ Լավագույն տարբերակն է օգտագործել Drush՝
drush config-export
կամ օգտագործել Drupal Console՝
drupal config:export
Նույնը վերաբերում է ներմուծմանը՝
drush config-import
կամ՝
drupal config:import
Լավ չէ կոնֆիգերը պահել կայքի արմատում։ Ավելի լավ է տեղափոխել կայքից դուրս՝ settings.php-ում նշելով՝
$config_directories['sync'] = '../config/sync';
Սովորելու ընթացքում կարող եք թողնել կոնֆիգերը կայքի արմատում։
Հիմա, երբ դուք արտահանել եք կոնֆիգերը և ավելացրել Git-ում, կարող եք դրանք ներմուծել մեկ այլ կայք։ Փոխենք օրինակ կայքի անունը՝
/admin/config/system/site-information
Եվ գնանք Configuration Synchronization էջ՝
/admin/config/development/configuration
Drupal-ը համեմատում է ակտիվ կոնֆիգերը config աղյուսակից sync կոնֆիգերի հետ և եթե կան տարբերություններ, դրանք ցուցադրվում են այս էջում։ Սեղմելով Import all՝ դուք կտեսնեք առաջարկ՝ ներմուծելու sync կոնֆիգերը ակտիվ կոնֆիգերում։ Այս կերպ դուք կարող եք կիրառել փոփոխությունները։