Drupal 8: usiamo i profili

Drupal 8: usiamo i profili

Lavorando in un t​eam​ ogni sviluppatore ha la necessità di avviare un progetto D​rupal 8​ e di condividerlo ​con gli altri membri. Questa operazione se non è standardizzata può diventare un incubo sia per la parte dev del team che la parte ops in quanto ogni sviluppatore può iniziare un nuovo progetto Drupal 8 in maniera differente. Fortunatamente ci vengono in aiuto i p​rofili​ che come in Drupal 7 ci permettono di iniziare un nuovo sito v​elocemente​ e con una comune c​onfigurazione​ di base. Cambiamenti in Drupal 8 Se si è abituati a Drupal 7 ci sono alcuni cambiamenti per quando riguarda la configurazione: PROFILE.info > PROFILE.info.yml Come per i moduli e per i temi il file .info ora usa il formato .yml . A parte la sintassi poco è cambiato all’interno: D7: PROFILE.info name = Profile Name description = Profile Description. core = 7.x dependencies[] = block dependencies[] = menu dependencies[] = node ... D8: PROFILE.info.yml name: Profile Name type: profile description: 'Profile description.' core: 8.x dependencies: ­ node ­config ­help ... PROFILE.profile Il profilo può essere utilizzato per personalizzare il form durante la fase di installazione. Nell’installazione standard di Drupal è qui che viene personalizzato l’utente admin e vengono impostate le informazioni di localizzazione. D7: PROFILE.profile function PROFILE_form_install_configure_form_alter($form, &$form_state) { // Default account $form['admin_account']['account']['name']['#default_value'] = 'admin'; $form['admin_account']['account']['mail']['#default_value'] = ‘admin@mysite.com'; // Default date/time $form['server_settings']['site_default_country']['#default_value'] = 'IT'; $form['server_settings']['date_default_timezone']['#default_value'] = 'Europe/Rome'; } Lo stesso risultato si ottiene facilmente con Drupal 8: D8: PROFILE.profile function PROFILE_form_install_configure_form_alter($form, FormStateInterface &$form_state) { // Default account $form['admin_account']['account']['name']['#default_value'] = 'admin'; $form['admin_account']['account']['mail']['#default_value'] = 'admin@mysite.com'; // Default date/time $form['regional_settings']['site_default_country']['#default_value'] = 'IT'; $form['regional_settings']['date_default_timezone']['#default_value'] = 'Europe/Rome'; } PROFILE.install La migrazione da Drupal 7 a Drupal 8 è più semplice se si prende come esempio il profilo standard di installazione situato in core/profiles/standard/standard.install : D7: PROFILE.install // Enable admin theme. db_update('system') -­>fields(array('status' => 1)) ->condition('type', 'theme') ­ ->condition('name', 'seven') ­ ->execute(); D8: PROFILE.install // Enable admin theme. \Drupal::configFactory()­>getEditable('node.settings')­>set('use_admin_theme', TRUE)­>save(TRUE); Personalizzazioni Ai clienti più esperti di solito si dà accesso all’account di admin ma alcune volte si ha la necessità di impedire loro di eseguire alcune operazioni. Per far questo creiamo il ruolo “Developer” e durante l’installazione vogliamo assicurarci che l’utente con UID 1 sia assegnato a quel ruolo: D8: PROFILE.install // “developer“ role to user 1. $user = User::load(1); $user­>roles[] = 'developer'; $user­>save(); Vogliamo inoltre creare gli utenti per ogni membro del team: D8: PROFILE.install // Create team accounts. $new_user = \Drupal\user\Entity\User::create(); $new_user­>setUsername('Andrea Lorenzetti'); $new_user­>setEmail(‘andrea@mysite.com'); $new_user­>setPassword(user_password()); $new_user­>enforceIsNew(); $new_user­>activate(); $new_user­>roles[] = 'developer'; $result = $new_user­>save(); $new_user = \Drupal\user\Entity\User::create(); $new_user­>setUsername('Mario Rossi'); $new_user­>setEmail(‘mario@mysite.com'); $new_user­>setPassword(user_password()); $new_user­>enforceIsNew(); $new_user­>activate(); $new_user­>roles[] = 'developer'; $result = $new_user­>save(); PROFILE/install/*.yml Il nuovo s​istema di gestione delle configurazioni​ ci offre una serie di nuovi strumenti che possiamo usare. Studiando il profilo di installazione standard di Drupal 8 (core/profiles/standard) notiamo una nuova directory di installazione, directory che abbiamo notato anche lavorando su moduli o temi per Drupal 8: questa directory contiene le configurazioni salvate in files .yml che vengono applicate in fase di installazione. Come precedentemente spiegato a volte è utile creare un ruolo di Developer e per ottenere questo in Drupal 7 dovevamo aggiungere questo codice in PROFILE.install: D7: PROFILE.install // Create a default role for The Jibe developers with all available permissions assigned. $new_role = new stdClass(); $new_role­>name = 'developer'; $new_role­>weight = 2; user_role_save($new_role); user_role_grant_permissions($new_role­>rid, array_keys(module_invoke_all('permission'))); // Set admin role. variable_set('user_admin_role', $new_role­>rid); In Drupal 8 aggiungiamo semplicemente un nuovo file .yml alla directory di install: D8: PROFILE/install/user.role.developer.yml langcode: en status: true dependencies: { } id: developer label: Developer weight: 2 is_admin: true permissions: { } Si può applicare questa logica a qualsiasi configurazione di default vogliamo modificare. Basta semplicemente copiare le configurazioni volute dall’opportuno file .yml ed aggiungerle alla directory di install. Se stiamo copiando le configurazioni da un progetto già esistente dobbiamo assicurarci di rimuovere l’hash della configurazione dal codice visto che viene generato ad ogni nuova installazione: _core: default_config_hash: wNOLcmycPFZCrXJ9wis9dCdSR4lpYILdBsFxS Con Drupal 7 siamo abituati ad usare il Drush Makefile per generare un progetto standard mentre con D​rupal 8​ è stato introdotta anche la nuova possibilità di usare c​omposer.​ Voi quale approcio preferite? Ditecelo nei commenti!

Realizziamo qualcosa di straordinario insieme!

Siamo consulenti prima che partner, scrivici per sapere quale soluzione si adatta meglio alle tue esigenze. Potremo trovare insieme la soluzione migliore per dare vita ai tuoi progetti.