ou
Fabrice Scoyer
Freelance Drupal - Flocon de toile
ne sont ni plus ni moins que des profils d'intallation concus pour fournir un ensemble de fonctionnalités orientées vers un objectif précis et commun
Mais pourquoi alors ne pas utiliser une de ces distributions déjà disponible ?
doit être fait avec une très grande précaution
Sinon on se retrouve très vite à construire un site en devant se battre CONTRE Drupal et non plus AVEC
* en référence à l'expression Villages Potemkine
Oooohhhhh, c'est beau !
Aaarrrrggghhhhhhhhhh
selon une approche générique et modulaire
[nom_profile].info.yml
name: Usine
type: profile
description: Génération site web.
core: 8.x
dependencies:
# Core modules
- node
# Contrib modules
- token
# Custom modules
- uas_taxonomy
themes:
- uas_base
- bootstrap
- seven
[nom_profile].info.yml
configurable_module:
uas_actualite:
label: Actualités
description: Fournit des contenus pour publier des actualités, avec commentaires.
enabled: true
uas_publication:
label: Publications
description: Fournit des contenus pour publier des publications.
enabled: true
uas_slider:
label: Diaporama page accueil
description: Fournit un bloc de contenu pour créer des diaporamas.
enabled: true
[nom_profile].profile
/**
* Implements hook_install_tasks().
*/
function [nom_profil]_install_tasks(&$install_state) {
return [
'configurable_profile_dependencies' => [
'display_name' => t('Features'),
'display' => TRUE,
'type' => 'form',
'function' => 'Drupal\uas\Form\ConfigurableProfileDependenciesForm',
],
'webmestre_account' => [
'display_name' => t('Webmestre Account'),
'display' => TRUE,
'type' => 'form',
'function' => 'Drupal\uas\Form\WebmestreAccountForm',
],
];
}
[nom_profil].install #pour effectuer certaines taches lors de l'installation initiale de votre profil
[nom_profil].services.yml #pour déclarer des services
[nom_profil].routing.yml #pour déclarer des routes spécifiques
[nom_profil].librairies.yml #pour déclarer des librairies à charger
[nom_profil].permissions.yml #pour déclarer des permissions spécifiques
etc. etc. #bref, tout fichier de configuration que l'on peut retrouver dans un module Drupal 8 classique
Mais il vaut mieux déporter toute fonctionnalité supplémentaire dans un module. Gardez le profil d'installation aussi simple que possible, uniquement pour altérer / compléter le processus initial
2 méthodes à disposition
Config/install : configuration déployée à l'installation du module
Config/optional : configuration dépendante de modules tiers, déployée lors de leurs installations
#File system.theme.yml
admin: seven
default: uas_base
langcode: en
function [mon_profil]_install() {
$uas->createMenuLink($node->title, 'entity:node/'.$node->id(),
2, 'footer');
}
[flocon@detoile /srv/www/uas]drush config-list | grep image.style
image.style.uas_large
image.style.uas_medium
image.style.uas_mobile
image.style.uas_narrow
image.style.uas_normal
image.style.uas_thumbnail
image.style.uas_wide_large
image.style.uas_wide_medium
image.style.uas_wide_mobile
image.style.uas_wide_narrow
image.style.uas_wide_normal
image.style.uas_wide_thumbnail
responsive_image.styles.uas_full_content
responsive_image.styles.uas_full_screen
name: 'Uas Image'
description: 'Provide image styles and responsive settings'
type: module
core: 8.x
package: Uas
dependencies:
- responsive_image
- image
config_devel:
- image.style.uas_large
- image.style.uas_medium
- image.style.uas_mobile
- image.style.uas_narrow
- image.style.uas_normal
- image.style.uas_thumbnail
- image.style.uas_wide_large
- image.style.uas_wide_medium
- image.style.uas_wide_mobile
- image.style.uas_wide_narrow
- image.style.uas_wide_normal
- image.style.uas_wide_thumbnail
- responsive_image.styles.uas_full_content
- responsive_image.styles.uas_full_screen
[flocon@detoile /srv/www/uas]drush cd-em uas_image
dependencies:
enforced:
modules:
- uas_image
Avec le module Configuration Synchronizer
Issue #2445463 pour le support de Drush
Permet de synchroniser la configuration d'un site depuis la configuration des modules
drush cs-update --unsafe