Sommaire 1.Track Business - Alexane Trubert

 
CONTINUER À LIRE
Prise de notes collaboratives DrupalCamp Paris 2019

Sommaire
1.Track Business..................................................................................................................................2
   1.1.Migration de Drupal 7 à Drupal 8 (France TV)........................................................................2
   1.2.Refonte en Drupal 8 de plus de 80 sites (Campus France).......................................................3
   1.3.Écosystème internet/intranet complet en Drupal 8...................................................................3
   1.4.Problématiques de cohérence graphique sur une architecture multi-sites et multilingue.........4
   1.5.Implémentation d'une plateforme Drupal 8 multi-sites – multi-marques.................................4
   1.6.Forge logicielle Drupal 8.......................................................................................................... 5
   1.7.Une architecture découplée, un Drupal 8 en back-end et l'intégration avec l'ensemble des
  outils du SI d'une chaîne hôtelière : PMS, CRS, CRM................................................................... 5
2.Track Expertise.................................................................................................................................7
   2.1.Drupal un CMS pas comme les autres .....................................................................................7
   2.2.Activer le cycle vertueux de Drupal et contribuer au CORE................................................... 8
   2.3.Maîtriser la POO & les Design Patterns................................................................................... 8
   2.4.L'Expérience Développeur dans Drupal 8 : Améliorez-la !......................................................9
   2.5.Économiser du temps d'intégration dans vos projets Drupal .................................................11
   2.6.État de l'art du RGPD sur Drupal 8........................................................................................ 14
   2.7.Container d'injection de dépendances aux petits oignons.......................................................15
   2.8.Comment mettre à jour les modèles de données en Drupal 8 ................................................16
   2.9.Réalité Virtuelle......................................................................................................................18
   2.10.Audit de sécurité d'un site Drupal.........................................................................................19
   2.11.Drupal 8 - Best practices.......................................................................................................22
   2.12.Micro Site ............................................................................................................................ 25
3.Track Découverte........................................................................................................................... 27
   3.1.Drupal 8 : présentation, utilisation et installation de Drupal et de modules...........................27
   3.2.Drupal 8, as-tu du Coeur ? (Drupal et les modules du coeur)................................................ 27
   3.3.30 modules en X secondes (D8)............................................................................................. 28
   3.4.Theming.................................................................................................................................. 30
   3.5.Développement de modules sous Drupal 8.............................................................................33

DrupalCamp Paris 2019                                                                                                                       1/33
1. TRACK BUSINESS
1.1. Migration de Drupal 7 à Drupal 8 (France TV)
Une des préoccupations sur le site est le temps réel (chose assez rare avec Drupal).
   ➔ Enjeux de la migration :
   ➔ Répondre au fort tra fic
   ➔ Usage orienté mobilej
   ➔ Eviter les erreurs liées à D7
Lancement du projet en novembre 2016 pour une fin de migration en octobre 2017.
MEP obligatoire en mai, impossible de changer cette date car Roland Garros ne pouvait pas être sur
l'ancienne infrastructure. (Livraison 2 jours avant le début de Roland Garros).
Livraison par thématique, migration par pattern d'URL. Lors de la MEP, seulement la partie
"Roland Garros" était sur cette nouvelle plateforme.
Architecture simple, mutualiser les technologies, résilience, scalable
Bnj rabittMQ à la place de beanstalk (améliore la performance du BO)
Résilience, pas qu'une protection en largeur (2 varnishs, 2 load balancers etc...) mais aussi en
profondeur.
Le but de la refonte a été principalement le Mobile First
Présence de Kilian Mbappe (
Questions :
Pourquoi utiliser SF en front ?
   ➢ Découpler un maximum le front. Mutualisation des technologies (il y a plus de SF à France
      TV aujourd'hui). Meilleure perf/scalabilité
Pourquoi pas d'utilisation JSON:API ?
    ➢ En alpha à l'époque du démarrage du projet. Besoin d'avoir des éléments calculés et non
      stockés. (JSON:API ne sert que des éléments stockés)

 1.2. Refonte en Drupal 8 de plus de 80 sites (Campus France)
Axess OWS : depuis 2001, +220 projets, expertise Drupal
18M de visites en 2017 > +20M en 2018
Ici aussi, les visites sur mobile dépassent celles du desktop
Utilisation de CMI + con fig filter/ con fig salit pour gérer le multi site
(https://www.drupal.org/docs/8/modules/con figuration-split)

1.3. Écosystème internet/intranet complet en Drupal 8
Par ??? de Synergie SE
Pourquoi Drupal ?
CMS populaire sur le marché / Module communauté : porté par la communauté. Rassurant.
Drupal 7 ou 8 ?
Sortie de D8 en 2015, quelle sont les risques ?
    •   absence de portage de module
    •   version béta
Refonte Digital
Tout l'écosysteme de synergie est passé sous Drupal.
Couplé avec un CRM via une API
Refonte from scratch de synergie.com
Portage vers D8 Aile-medical.fr et synergie.aero :
    •   Migration de contenu
    •   Moteur de recherche
Béné fice du projet
    •   CMS : un contenu renouvelé
    •   Gain en référencement
    •   Tra fic doublé en 1an
Drupal est-il le CMS idéal ?
Oui :
    •   Pour les contributeurs, rendre la main au métier
    •   Les fonctionnalités sont pérenne, car module contrib

DrupalCamp Paris 2019                                                                           3/33
Non :
   •    Complexité de Drupal dans un env applicatif : pour un même besoin il y a plusieurs façon de
        faire
   •    Maitrise de Drupal pour répondre au mieux les futures besoins
Pas mal de multi-site Drupal

1.4. Problématiques de cohérence graphique sur une architecture multi-sites et multilingue
Par Denis Pitzalis de l'UNESCO
Par Julien D. Happyculture

+3M de visiteurs sur le site. Peu de moyens sont engagés pour la présence sur le web. Le site a un
financement de 5K € par an pour la maintenance.
Site multi-site : Présence dans de nombreux pays, avec 6 langues principales + la langue des pays
où un siège est présent.
Avant Drupal : HTML from scratch (Année 90), Simplify (2002), typo3 (2008)=>permet de gérer
les 6 langues.
2012 ! Drupal 7 !
Etat des lieux : 3M de pages, un vrai bazar d'interconnexion entre les pages
Infrastructures physique gigantesques.
Manque d’homogénéité entre les pages Typo3.
Pourquoi Drupal ?
   •    Connexion avec AD
   •    HTTPS pour communication interne et externe
   •    gestion des modules avec composer
   •    Themes sur bootstrap ; responsive etc
   •    Faire une séparation distincte entre applicatif et communication
Problématique : gérer autant de site, de data, avec un budget très restreint (environ 5000 euros par
an)
Tu perds du temps à déployer à la main, ou a faire des choses manuelles. Avec Drupal solution
possible.
Faire des scripts pour automatiser : shell, gitlab-CI, composer, ANSIBLE
Comment faire pour convaincre les métiers
Guidelines très prévis
Formations

1.5. Implémentation d'une plateforme Drupal 8 multi-sites – multi-marques
Multi Sites pk?
   ➢ mutualisation infrastructure
   ➢ structure de ressource
   ➢ dé finition d'éléments communs

DrupalCamp Paris 2019                                                                           4/33
➢ évolution
Problèmes
   ➢ Gouvernance
   ➢ Technique
   ➢ version core
   ➢ media contrib vers media core
   ➢ abandon de features pour l'approche pure CMI
Domain access

 1.6. Forge logicielle Drupal 8
Drupal Factory
Réussir agra = groupe d'information professionnel pour les agriculteurs
Options à disposition : repeindre le framework maison existant / umbrage cms C# / Drupal
7 mois en 2016 pour faire monter l'équipe en compétence et la connaissance fonctionnelle tout en
livrant des sites
13 mois en 2017 pour mettre en place du sso et une ferme à site avec domain access (aie!)
2 mois décembre 2017 à janvier 2018 / changement de dsi / domains ou pas? Sortir de Drupal ?
Assembler une forge devops / standard fonctionnel / con figuration de blocs / personalisation de
thème par site.
Depuis janvier : audit / analyse et architecture des besoins pour ensuite lancer la forge.
Optimisation de l'infra, création d'une distribution, utilisation de Jenkins et d'environnements dev
recette prod Utiliser un thème du marché, valider le poc avec 2 sites et apprendre à partir de là.
Identi fication des besoins communs aux sites
Demain : optimiser le partage de contenu, uniformiser le Web marketing, mettre en place des tests
automatisés (behat / phpunit)
Migrer les sites actuels
Ajouter des nouveaux services
En résumé passage d'une merde 1jour à 20 min
1 site = 3 semaines de dev / webmaster contre 8 à10 semaines avant
On va plus vite que le métier
6 mois de temps d'investissement
Coût similaire à la version de domains
   ➢ Distribution sous ligthning

1.7. Une architecture découplée, un Drupal 8 en back-end et l'intégration avec l'ensemble
    des outils du SI d'une chaîne hôtelière : PMS, CRS, CRM.
Par ??? de B&B Hotel
Objectif :
   •   Un site unique, une charte cohérente avec la marque, multilingue et la possibilité de
       continuer de faire des réservation

DrupalCamp Paris 2019                                                                            5/33
•   Être et rester une marque Innovante
   •   Préserver un Business model (coût de distribution faible)
Présent dans 12 pays. Environ 1 hotel s'ouvre par semaine.
Pourquoi Drupal ?
   •   Communanuté dynamique
   •   Robustesse technique de D8
   •   Open Source
Accompagnement en conception jusqu'à la mise en prod, par un acteur reconnu (Adyax) : c'est
rassurant
Stratégie
3 mois de discovery :
   •   Cadrage fonctionnel
   •   Cadrage Technique
   •   UX & UI
Développement en mode agile (Au forfait)
La version espagnole pour les "cobayes" : ils ont était choisi pour des raisons pratique
ESB : https://www.softwareag.com/resources/Enterprise-service-bus
Objectif : centraliser la communication entre le site web, l'application mobile, le CRM
(Salesforce), le CRS (Central Réservation System) et le PMS (Property Management System)
MVP
   ➢ setup de Drupal pour gestion contenu et navigation globale
   ➢ création du moteur de recherche dans Drupal
   ➢ tunnel de réservation en React.js
   ➢ espace client pour gérer les réservations
   ➢ exposition des contenus et du search via API aux autres applications : application mobile,
       emails, outils des conseillers du call center et des hôteliers
Point fort D8
   ➢ BO user friendly par rapport aux outils actuels
   ➢ Gestion des rôles & permissions
   ➢ Fonctionnalités natives/communautaires flexibles (plani fication de contenu, ajout de
     nouveaux pays/langues/devises)
   ➢ Capacité à créer/ajouter des modules complémentaires riches
Petite découverte bien heureuse : https://www.drupal.org/project/tmgmt Translation Management
tool
Axe d'amélioration proposé : rendre plus intuitive et user friendly l'interface de gestions des
traductions (User interface translation). On parle bien ici de l'interface, pas des traductions des
con figurations.
Axe future : Reste 8 pays

DrupalCamp Paris 2019                                                                            6/33
A/B Testing

2. TRACK EXPERTISE
 2.1. Drupal un CMS pas comme les autres
par Simon Georges / La page sur DrupalCamp / La présentation / L'article

Simon est un president magni fique (avec son petit épi
2.2. Activer le cycle vertueux de Drupal et contribuer au CORE
Par David Suissa : username drupal.org Dydave / La page sur DrupalCamp /
Constat : Où en sommes nous ?
Un grand gap entre le nombre de contributeur et le nombre d'utilisateur
Idée reçu : la contribution s'est orientée DEV
Quelles types de contribution ?
   •   Poster des issues (Non technique)
   •   Test et commentaires sur les issues (Non technique)
   •   Faire des patchs (Technique)
   •   Faire de la doc (Non technique)
   •   Traductions (Non technique)
   •   Organisation d'event de meetup de codesprint, etc (Non technique)
   •   Création design et ergo (Non technique)
   •   Mentorat (Coaching, partage expérience) (Non technique)
   •   Rédaction Blog/tuto (+- Technique)
Qui peut contribuer ?
Idée reçu : mon niveau technique est trop bas pour aider
C'est faux, toute retour d'expérience est bienvenu :
   •   Avoir le point de vue d'un junior peut mettre en avant des dif ficultés de documentation,
       d'implémentation
   •   Avoir des retours utilisateur final, pour des retour UX
   •   etc
Pourquoi ?
Tester ça coûte cher en interne : se répartir la tâche avec une grande communauté, tu postes ton
patch et tu laisses les gens tester et te faire tes retours
Maintenir une doc en interne ça coute cher, c'est chiant pour certain, moins pour d'autre : utiliser les
forces et faiblesses de chacun
Le code est en perpétuel mouvement : En contribuant, tu gardes une vision globale sur le produit,
sur les patch technique, tu montes très vite en compétences
Recrutement et visibilité : Donne une légitimité sur le marché et auprès des clients.
On discute et confronte nos idées : tire vers le haut
Activer le cercle vertueux
Ne pas contribuer : on passe à côté des valeurs open sources
Contribuer donne toujours un Retour sur investissement
C'est jamais parfait et c'est pas grave

2.3. Maîtriser la POO & les Design Patterns
@woprrr / La page sur DrupalCamp / La présentation / L'article

DrupalCamp Paris 2019                                                                               8/33
Qui dit design pattern, dit UML.
Rappel sur l'UML qui est le bon moyen de représenter les objets/class.
Concept de base
Les pilliers OOP
Notions de lien cause/effet --> abstraction/encapsulation/héritage/polymorphisme, notion de base de
l' UML
Explication de l'encapsulation avec l'exemple d'un moteur voiture ainsi qu'avec un aéroport et des
moyens de transport volants
Classe abstraite
Polymorphisme
Design Patterns : qu'est ce que c'est ?
Classi fication :
   ➢ Creationals : mécanique de création d'objet, exemple : Absctract Factory
   ➢ Structurals : « ef ficacité et souplesse »
   ➢ Behaviorals : ex Mediator : event dispatcher
Design Patterns : pourquoi les apprendre ?
   ➢ Pour mieux comprendre son environnement de de dev et mieux interagir avec (exemple les
     plugin de D8, etc.)
   ➢ Boite à outils (éprouvés) pour résoudre des problématiques communes.
Abstract factory

2.4. L'Expérience Développeur dans Drupal 8 : Améliorez-la !
Présentation par Thomas Calvet / La page sur DrupalCamp

Dé finition de la DX :
C'est un peu comme l'UX mais on parle ici de l'expérience de développement.
C'est un sujet vaste car beaucoup de types de développeurs
Concrètement, par exemple :
   •   fournir des classes abstraites
   •   fournir des traits
   •   PHP doc à jour
   •   Throw exceptions (be defensive)

Pourquoi ??
   •   Réduire la frustration
   •   travailler plus vite
   •   réputation du framework/cms (et donc + de dev, etc.)
Même concept appliqué au dev : le dev est client de l'outil.

DrupalCamp Paris 2019                                                                         9/33
•   Support de site
   •   Maintenabilité du code
Pluralité des pro fils dev
Site builder
theme builder
module maker
Améliorer le développement au quotidien et éviter les tâches répétitives dans les devs de modules
custom.
Expérience dev niveau site builder (custom code)
Abstraire ses implémentations !
Utilisation des traits.
(Drupal reste du PhP utiliser la puissance du langage au service du Framwork)
Penser à faire de la Doc Code (Doc block, doc PHP .....,)
Les classes de test, doivent rester des classes de test : donc ne pas se nommer comme les
fonctionnelles.
Pas de gestion de "modes" (dev, qualif....) =! Symfony (introduits par des modules contrib : Con fig
Split, Con fig Ignore, Con fig Filter... qui ne sont pas directement ont dans le core)
niveau 1 de la pyramide des besoins du dev ! Af fichage des exceptions et debugging
Principal dif ficulté du nouveau dev Drupal :
Clean the cache ! WHICH OOOOOONE ?
https://www.drupal.org/community-initiatives/drupal-core/d8dx
Drupal debug --> gihub --> composer
   ➢ https://packagist.org/packages/ekino/drupal-debug
Drupal development conf
La librairie bloque les confs dans le settings.php notamment les agrégas de fichiers CSS et/ou JS
Désactiver les caches
   •   cache bins render
   ➢ oage
   ➢ dynamic_page
   •   Settings class singleton
Drupal debug passe après $settins
Enable Twig debug :
Voir AdminToolbar avec devel sinon notamment pour twig??? (cf Romain Jarraud notamment)
Proposer le mode debug de Symfony pour Drupal :D
ExceptionListener/ExceptionHandler
Analyse de code notamment les Deprecated > log
Analyse du code pour cibler les dump dans tous les fichiers et permet de les cibler
Imposer les bonnes pratiques !
Throw error, error is an exception !

DrupalCamp Paris 2019                                                                          10/33
L'envdev est là pour planter, mieux vaut lui que la prod.
     ➢ pas encore actif de base
Système de "watcher" qui permet d'invalider les caches (par exemple : lorsque des fichiers
*.module, *.routing.yml, *.services.yml sont modi fiés/ajoutés/supprimés)
Invalidate all Cache
Pour utiliser la librairie, il faut utiliser un autre Kernel -----> Debug Kernel extends Drupal Kernel
(meilleur Run level qu'un module)
extends et s'y substitue par le biais d'un class alias.
à désactiver pour les tests.
Con figurations possibles via YAML (pas tous encore)
     ➢ marche de base va valeurs pas défauts

2.5. Économiser du temps d'intégration dans vos projets Drupal
Floris Moriceau @FlorisMoriceau / La page sur DrupalCamp

Développeur FE (HTML/CSS/UI/UX/A11Y), secrétaire de l'asso Drupal France, lead dev front end
de drupal.fr
Sommaire :
     •   Avertissements
     •   Le projet X
     •   Les maquettes
     •   L'intégration
     •   Le thème
     •   Responsive Design
     •   A11Y / I18N / SEO
     •   Performance
     •   TMA
     •   Conclusion

a)       Avertissements
Projet caricatural pour l'exemple mais inspiré de faits réels.

b)       Le projet X
Le lot UX/UI a été attribué à une agence de communication, vous avez gagné la prod, la TMA reste
à gagner.
Le périmètre fonctionnel ne rentre pas dans le budget, il va falloir retirer des fonctionnalités.
Drupal a été choisi, délais assez courts

DrupalCamp Paris 2019                                                                             11/33
c)       Les maquettes
Trop beau ! Validé par le client ! Youpi ! Sauf que...
     •   on veut deux headers différents : un sur la home et l'autre sur toutes les autres pages
     •   colonage hasardeux
     •   le lorem ipsum ne dépasse jamais...
     •   une maquette PSD ne donne pas la cinétique (pas d'animation)
     •   le client ne fournira jamais des photos de la qualité de la maquette
     •   les polices n'existent pas forcément en webfont, ou sont très chères. La font avec 6
         déclinaisons (demi-bold etc) : trop lourd !
     •   themeforest : IT'S A TRAP !
Le client a validé des maquettes avec du périmètre fonctionnel qui ne va pas être intégré : qu'est-ce
qu'on en fait ? À qui on parle ?

d)       L'intégration statique
Intégrer les maquettes en HTML / CSS : temps d'intégration x 1,5 au moins
Les contraintes liées à Drupal ne sont souvent pas connues par l'intégrateur
À ce stade, souvent pas de maquettes tablette / mobile (true story)

e)       Le thème
Choix du thème de base : nécessite ré flexion
Le thème Bootstrap basé sur la V3, impose un choix de container (intégration X 8 !), dif ficile à
surcharger... Bref NOPE
Laissez les devs fronts faire du front !

f)       Responsive design
Ça y est, les maquettes mobile sont arrivées (on a déjà commencé à être intégrées...)
Et SURPRISE !
     •   Les blocs ne contiennent pas les mêmes infos, ne se loadent pas dans le même sens, voir ne
         s'af fichent pas dans la même région
     •   La navigation est différente
     •   Le schéma de couleur n'est pas le même
     •   Mélange des deux versions en version paysage seulement pour la version tablette...

g)       A11Y / I18N / SEO
"AU FAIT, le site doit être RGAAA" (ben tiens)
Pour être RGAA compliant il faut notamment :
     •   que toute l'information soit accessible sur tous type de device même sans JS
     •   proposer une version en contraste inversé
     •   proposer un ajustement de la taille de texte (il est où le bouton dans la maquette ?)

DrupalCamp Paris 2019                                                                              12/33
•   navigation clavier !
     •   hiérarchiser les informations correctement
     •   etc
"Les trads, ça prend combien de temps à intégrer ?"
     •   Certaines polices n'embarquent pas les caractères spéciaux d'une langue
     •   Certaines langues sont plus verbeuses
     •   Des alphabets ou idéogrammes impliquent des ajustements pour être lisibles
     •   Langues qui se lisent de droite à gauche...
"On vient de recevoir l'audit du presta pour la SEO, y'a quelques petites modifs, essentiellement des
h1 à changer..."
Oui mais non, la hiérarchie des titrages est conditionnelle suivant les pages
les MIME / metatags : ça aurait pu être fait lors de l'intégration des contenus, ou besoin de token
custom donc dev back

h)       Performance
"C'est lent Drupal !"
Temps d'exécution = f(exceptions)
Drupal 8 = générateur de cache
L'enjeu c'est de savoir quand l'invalider :
     •   plus c'est générique, plus c'est rapide
     •   plus c'est simple, plus c'est rapide
     •   plus c'est léger, plus c'est rapide

i)       TMA
TMA = dette technique
On livre un truc qui fonctionne (à grand coup de patchs, de modules contrib, de preprocess...)

j)       Conclusion
On fait communiquer lors de la création des maquettes le designer et le themer Drupal : si c'est vu
avant, on peut dire stop !
On se pose les bonnes questions trop tard, en dernier.
On véri fie bien que les maquettes soient cohérentes avec le cahier des charges ("il sert à quoi ce
bouton qui implique du fonctionnel absent du cahier des charges ?")
On laisse le theming au themers : donnez-leurs seulement des render arrays, ils adorent ça !
On essaie d'être le plus générique, le plus simple, le plus pertinent dans la création UX/UI (simple
ne veut pas dire chiant !)
Une maquette themeforest, c'est un pichet : on peut avoir du pertinent la piquette ou un grand cru
dedans
On ré fléchit dès le début du projet au responsive, à l'a11y, à l'i18n, au SEO...

DrupalCamp Paris 2019                                                                            13/33
2.6. État de l'art du RGPD sur Drupal 8
Guillaume Bec / La page sur DrupalCamp / La présentation

Le RGPD, ce n'est pas que le bandeau cookies !
Adopté en 2016, entrée en vigueur en 2018
La CNIL sert d'autorité d’administration pour véri fier l'application du RGPD
Elle recommande 4 étapes :
   ➢ constituer un registre du traitement des données. Dans Drupal : identi fier les champs,
     déterminer qui y a accès
   ➢ faire le tri dans ces données : réduire, on ne doit récolter que les données nécessaires et
     pertinentes; mettre en place un contrôle des accès; supprimer ou archiver automatiquement
     les données
   ➢ respectez les droits des personnes : informer et expliquer la collecte; demander
     préalablement le consentement explicite; permettre l'opposition, l'accès, la suppression des
     données
     ➢ sécuriser les données. Côté Drupal : mettre à jour; segmenter les rôles et les droits associés;
         anonymiser ou chiffrer les données quand on récupère la base de prod; informer en cas de
         fuite
Données personnelles dites "sensibles" (préférences sexuelles, religion etc) : elles doivent être
particulièrement sécurisées
Le Drupal core est RGPD ready en quelque sorte : un utilisateur peut voir ses données via son
compte et il peut même être autorisé à supprimer son compte et les contenus associés.
Drupal GDPR Compliance team : coordonne les efforts pour que Drupal soit conforme. Issues : on
part du texte de loi et on ré fléchit à comment ça peut se traduire dans Drupal
Il y a actuellement 22 modules mais c'est encore WIP
Module GDPR
Seul, fourni une check-list de sensibilisation. Fourni aussi des sous-modules :
   •   GDPR consent : ajoute un entité et un type de champ pour l'opt in (entity : assessment). Très
       brut, pas out of the box. Attention, module D7 avec le même nom, on parle bien ici du sous-
       module D8
   •   GDPR fields : permet de dé finir quels champs contiennent des données personnelles et si on
       peut les supprimer par exemples
   •   GDPR tasks : demande de télécharger des données, demande de suppression des données,
       mais on peut rajouter nos propres tâches. Fonctionne avec un CRON.
   •   GDPR Obfuscated SQL Dump (gdpr_dump) : commande drush d'export de la BDD avec
       protection des champs personnels (obfuscation par type de champ). Copie dans une table
       temporaire, fait les modi fications, puis récupère les données de cette table-là : pas d'accès
       direct aux données réelles des utilisateurs. On ne récupère jamais la base réelle, mieux qu'un
       drush sql sanitize où il faut télécharger la base pour pouvoir traiter les données et les
       partager ensuite.
Module gdpr_compliance
Pas recommandé, un seul maintainer. Marche un peu out of the box mais ne propose pas tous les
hooks nécessaires pour étendre. D'autres modules proposent mieux (pas exemple une fois le
consentement donné on ne peut plus le retirer)
Module ip_anon

DrupalCamp Paris 2019                                                                            14/33
Remplace les ips des visiteurs par une version hashée. Son défaut : passe par la tâche CRON donc
pendant un certain temps on a les vraies IP en base. Cryptolog fait ça mieux.
EU Cookie Compliance
Un des modules les plus utilisés depuis 2012. Permet la mise en place d'une bannière pour exprimer
le consentement. Permet de désactiver certains fichiers JS de tracking par exemple. Il manque la
possibilité de choisir par catégories (pub, nécessaires etc) mais issue en cours sur le sujet.
Cookiebot
Intègre des services tiers.
Cookie consent, cookie_gdpr, etc...
Tarte au citron (français, recommandé par la CNIL)
Module dégueulasse, utilise la version payante : utilisez la lib en direct !
Autres modules qui implémentent des fonctionnalités RGPD
   •   GDPR google tag manager
   •   Voting API (utilisé par FiveStars par exemple)
   •   Smart ip
   •   Simplenews
   •   Advertising entity
Autres sujets
   •   Matomo (remplace Google Analytics) : USE IT !
   •   Mailchimp : ne gère pas encore le RGPD
   •   Mask User Data : dé finit des champs du compte utilisateur et génère des fausses données en
       local (pas RGPD compliant, on est obligé de récupérer les données d'abord)
   •     Quantcast : pas d'intégration Drupal mais pas nécessaire, ils fournissent du JS à intégrer
         dans le site si c'est ce qu'on veut utiliser
GDPR + EU cookie compliance + cryptolog c'est déjà une bonne base mais il y aura quand même
du boulot à faire
Il faut séparer les comptes ! On doit savoir qui est intervenu sur quoi : compte personnel avec des
droits cohérents
Question : Comment on gère les fichiers type un CV en PDF ? Réponse : on peut marquer le champ
comme contenant des données sensibles et ce sera obfusqué a priori

2.7. Container d'injection de dépendances aux petits oignons
Présentation par Nicolas Perussel / La page sur DrupalCamp / La vidéo Youtube

522 services disponibles sur une installation fraîche
Drupal : tout doit être disponible au run time
Solution : créer un dumper (stocké en BDD) => PHPArrayContainer
Composant Symfony dans vendor mais un peu trop statique => composant Drupal dans component
(DependencyInjection)
Dé finitions

DrupalCamp Paris 2019                                                                        15/33
•   DIC : Dependency Injection Container est un objet qui comprend comment instancier et
       comment con figurer les objets. Il connaît les arguments du constructeur. Il utilise les
       dé finitions (objet spécial dans Sf)
   •   Services synthétiques
   •   Container and container builder
   •   Compiler passes, service tags
   •   Compiler
   •   Dumper
Comment ça marche dans D8
   •   Container, implémente la ContainerInterface de Symfony
   •   ContainerBuilder, extends SymfonyContainerBuilder (surcharge pour les spéci ficités de
       Drupal comme le strtolower sur les service IDs)
   •   PhpArrayDumper et OptimizedPhpArrayDumper
   •  Plusieurs dumpers à dispo : PhpDumper, XmlDumper, YamlDumper, GraphvizDumper
      (mais trop violent pour du Drupal...)
Séquences
   •   boot() appelé depuis DrupalKernel()
   •   initialisation du Container avec initializeContainer()
   •   s'il n'y a d'udate de module ou de changement dans le container, on le récupère depuis le
       cache avec getCachedContainerDe finition()
   •   si le Container n'est pas disponible ni de version en cache : compileContainer()
   •   On récupère les service providers (hardcodés), les namespaces sont enregistrés,
       class_loader, kernel, services_containers, puis les yaml sont loadés
(il manque 3 étapes et la fin de la conférence)

 2.8. Comment mettre à jour les modèles de données en Drupal 8
Nasser TIJANI @Nnassertijani / La page sur DrupalCamp
Lien de l'article dont est issue cette présentation : https://capgemini.github.io/drupal/How-to-
update-data-model-on-drupal-8/
Il ne suf fit pas de faire un drush updb...
Sommaire :
   •   Flashback
   •   Comment écrire un màj du modèle de données
   •   Les différents types de màj
   •   Créer des contenus par défaut
   •   Mettre à jour les contenus après un export de conf
   •   Work flow ef ficace et atomique pour CI/CD

DrupalCamp Paris 2019                                                                              16/33
a)       Flashback
Modèle de données relationnel = une collection de relations. Entités basées sur le réel
Modèle de format décrit la structure des données. Con figurations en fichiers yaml

b)       Écrire une màj
Un module Drupal peut fournir son propre modèle de données
hook_update_N()
Exemple avec 8001 : 8 = version du core, 0 version du module, les deux derniers chiffres = version
de la màj
Le problème : Drupal continue de tourner même avec une DB n'est pas à jour
hook_schema()
Dé finit la table d'origine. On est à la version 8000.
Si on a besoin de le modi fier par la suite, deux étapes :
     •   mettre à jour dans le hook_schema pour les prochaines installations
     •   utiliser hook_update_N pour ceux qui ont déjà le module installé. La première màj sera
         8001. Utiliser du code bas niveau dans ce hook car Drupal n'est pas entièrement chargé à ce
         stade d'exécution.

c)       Types de màj
     •   pré fixer la table, changer la taille d'un champ, ajouter la possibilité d'avoir des valeurs
         nulles... : mettre à jour le hook_schema + hook_update_N
     •   ajouter un fichier de con figuration à un module qui n'en avait pas initialement : mettre à jour
         les fichiers yml + hook_update_N (service con fig installer pour repérer les nouveaux
         fichiers)
     •   ajouter un libellé pour le message de bienvenue : hook_update_N avec con fig_factory
     •   nouvelle entité de con figuration
     •   nouvelle entité de contenu : EntityDe finitionUpdateManagerInterface pour mettre à jour la
         dé finition d'une entité ou la dé finition d'un de ses composants
     •   hook_post_update_Name() : modi fier des contenus ou des entités qui existent déjà

d)       Créer des contenus par défaut
Dé finir des dépendances de modules dans le .info.yml du module
hook_update_dependencies() : pour dé finir qu'on installe une version d'update après un certain
update d'une dépendance (par exemple, 8001 doit être appliqué après le 8003 du module X que j'ai
en dépendance)
Ne jamais créer des contenus dans un hook_update_N, hook_post_update_name, hook_install
Peut être une commande drush custom, un script avec drush php script, un dump 0 de la bdd

e)       Mettre à jour les contenus après un export de con figuration
Pas de hook_update_N ou hook_post_update_Name : s'exécutent avant de con fig-import
Pas une commande drush custom ou script avec drush php-script

DrupalCamp Paris 2019                                                                                   17/33
La réponse => hook_post_con fig_NAME() (pas encore dans le core !)

f)       Work flow CI/CD
En attendant une deploy API dans le core !
     •   drush updb (qui lance hook_update_N() et hook_post_update_NAME())
     •   hook_pre_con fig_import_NAME()
     •   drush con fig-import
     •   hook_post_con fig_import_NAME() a partir de la 8.7
         https://www.drupal.org/project/drupal/issues/2901418

2.9. Réalité Virtuelle
Présentation par Christophe Villeneuve / La page DrupalCamp / La vidéo Youtube

Manipulation de la couche API
UX, interface utilisateur
WebAr/WebVR/WebXR
Apporter la VR performante dans le web ouvert
Ne se limite pas au jeu
La VR :
Immersion dans la scène 3D
Une vieille idée
L'AR :
Augmenter la réalité par des informations ajoutées via device
Le futur GMaps sera en AR (source : frenchweb)
Par Drupal :
     •   Modules ReactVR/ a frame / VR
     •   Webservices
     •   Back / Front (à privilégier)
Aujourd'hui, les modules Drupal ne sont globalement pas stables.
Une pléthores de devices et la liste s'allonge.
Le principe de la AR se base sur la stéréoscopie, permet la perception du relief
La compatibilité des navigateurs pose problème. Chrome desktop compatible avec sa propre API
WebVR
Les compatibilités matériels ne sont pas standardisées (https://webvr.rocks/)
Jquery React redux vue.js ...
DOM
A-Frame => Aframe Component
Entity-component
WebGL => WebVR

DrupalCamp Paris 2019                                                                    18/33
Browser
Drupal
En pratique (librairie https://aframe.io/blog/arjs/) :
     •   Déclarition de la libraire dans une page HTML clasique
     •   Utlisation de la caméra et déclaration d'une scène
     •   preset='hiro' marqueur d'appel de la caméra

2.10. Audit de sécurité d'un site Drupal
Par Mickaël Deffontaine (Imgospirit) @laborouge / La page sur DrupalCamp / La présentation /
La vidéo Youtube

Développeur pro fil "full stack" : theming, back of fice, gestion projet, maintenance serveur
Agence numérique et pas digitale (trolololo) : on met le doigt sur quelque chose ?
Retour d'expérience anonyme : un développeur qu'on appellera Mickaël, un client Top Discount,
une entreprise Top Sécurité.
Développement d'un site de e-commerce. Il était convenu de faire un audit de sécurité en amont.
Choix techniques :
     •   Drupal (7, mais le retour peut s'appliquer à D8)
     •   Pas de drupal commerce
     •   Utilisation de la form API
     •   Implantation manuelle du paiement en ligne ? Késako ? Pas de module dédié au paiement
Classement :
     •   failles mineures
     •   failles importantes
     •   failles majeures
Ils ont mis l'accent sur ce qu'ils ont trouvé (par exemple, pas de remarques positives comme
"Drupal est à jour")

a)       XSS Stored : exécution de JS
Utilisation de la form API : hook_form_validate() et hook_form_submit() (création de node avec
les soumissions du formulaire)
XSS persistante : l'attaque la plus dangereuse. Injection de code dans le serveur du site vulnérable et
infecte toutes les personnes visitant cette page. Le cas ici.
XSS non persitante : le script est dans la requête
La form API Drupal ne sanitize pas défaut.
Solution: filter_xss(), check_markup()
Retour d'XP :
Deux lignes de code à implanter mais rien n'est acquis (des tests !)

DrupalCamp Paris 2019                                                                            19/33
b)       Énumération des paiements
Informations sensibles dans la page de con firmation : email de l'utilisateur et n° de commande
(hook_menu de la forme /paiements/666)
Commande possible sans compte client (dans la demande client) => faille trouvée puisque le
numéro s'incrémente.
L'accès à ces infos augmente les risques de phishing
Solution
     •   limiter l'accès à ces pages et générer des identi fiants imprévisibles.
     •   drupal_random_key()
     • Ajout d'un argument "id" dont la valeur est stockée dans le node. Si on essaie d'accéder à
       paiements/666 avec le mauvaise param, l'accès est refusé.
Retour d'XP : le client a pris conscience du risque puisque l'audit a con firmé la préconisation de
développement (= pratique dangeureuse). Facile à corriger.

c)       Connaissance des noms de compte
users/top-admin => compt existant, on a une 403
users/plop => n'existe pas, 404
Donc on peut savoir si le compte existe et lancer des attaques force brute pour tenter d'y accéder.
Solution :
     •   Pour les utilisateurs, ne pas utiliser pathauto : pas d'alias d'URL sur les users
     •   Module "Rename Admin Paths" : évite de déduire les URL sensibles pour ceux qui
         connaissent Drupal
     •Username Enumeration prevention :
      https://www.drupal.org/project/username_enumeration_prevention
Retour d'XP : peu de travail, module existants

d)       Fichiers inutiles au fonctionnement de la production
Accès aux fichiers txt, en étant anonyme. exemple : changelog.txt
Solution :
     •   suppression des fichiers ? Non, car il s'agit de readme : on devra les re-supprimer à chaque
         mise à jour; dette technique
     • limitation d'accès ? Demande à la communauté : solution d'un .htaccess où tous les fichiers
       en README.txt ou .md ou .markdown renvoient vers une 403. Implanté directement dans
       les paramètres de l'hébergement pour ce site
Drupal paranoia : https://github.com/drupal-composer/drupal-paranoia
Plugin composer qui va retirer les fichiers non asset : a utiliser lors d'un script de déploiment par
exemple
Retour d'XP :
     •   un vrai choix technique (limiter l'accès à des fichiers sensibles)
     •   peu onéreux en temps

DrupalCamp Paris 2019                                                                             20/33
e)       Fuite d'information fichier de template
Oubli : désactiver le theme_debug pour la mise en prod (oops I did it again)
Solution : une checklist pour la mise en prod ?
Faire de l'intégration continu et Ansible (script de déploiement)

f)       CSRF : déconnexion utilisateur
Via l'url /user/logout et un script : déconnecte l'utilisateur
Préconisation : requête HTTP en POST, token CSRF
Discutable : faille pas si majeure, recherche de solution technique mais... il faudrait réécrire le CMS
Probablement assez secure (il faudrait déjà avoir accès au backof fice) et la conséquence n'est pas
très grave (on est juste déconnecté)

g)       Entêtes HTTP : Strict-Transport-Security

h)       Entêtes HTTP : Content-Security-Policy
Possibilité d'appeler un script externe, de récupérer un cookie de session utilisateur
Nicolas Hoffman : articles sur CSP
Solution
     •   Implantation du module Security Kit
     •   Implantation du code directement
Retour d'XP
     •   une prise de conscience sur cette bonne pratique
     •   beaucoup de test (pas évident au début comme tout est fermé, exemple de CKEditor qui
         n'était plus appelé)
     •   Onéreux en temps la 1ere fois

i)       Entêtes HTTP : fuite d'information sur le serveur
Il suf fit de consulter les entêtes HTTP pour avoir des informations sur le serveur
Exemple :
     •   Version nginx
     •   Version Drupal
     •   Version php
Solution
     •   implantation directement sur l'hébergement
Retour d'XP
     •   recherche de documentation
     •   contrôler son hébergement
     •   onéreux en temps

DrupalCamp Paris 2019                                                                            21/33
j)       Multiples vulnérabilités : CKEditor
Faille mineure. Af fichage de la version de CKEditor en connecté.
alert(CKEDITOR.version); dans la console.
Impossible à exploiter sans être logué.
Solution
     •   mettre à jour !
     •   outils d'alertes pour les màj de sécurité
Retour d'XP
     •   peu onéreux en temps
     •   mise en place d'outils de veille (limiter la dette technique)

k)       Multiples vulnérabilités : PHPMailer
On peut obtenir la version de PHPMailer.
Faille Majeure même si non exploitable au moment de l'audit.
SMTP sur Drupal 7 : version de PHPMailer de ce module n'est pas à jour, contient des failles.
Solution
     •   réécrire le module pour mettre à jour la version de PHPMailer
Retour d'XP
     •   adaptation du module : onéreux en temps
     •on s'enferme dans les modules sans faire attention à ce genre de détail. Problème de la
      maintenance des libraries
Conclusion
     •   très formateur
     •   des acquis qui ne l'étaient pas
     •   hausse de compétence
     •   hausse de vigilance
     •   implantation de base sur les projets suivants
Quelqu'un parle de Drupal Paranoïa sur D8 : https://www.drupal.org/project/paranoia

2.11. Drupal 8 - Best practices
Par Fabien Clément (L'Équipe.tech, @GoZOo) / La page DrupalCamp / La présentation / La vidéo
Youtube

   Rule 1 : don't hack!
- Core ou Contrib : on ne modi fie par les fichiers;
Module Hacked : permet de savoir si un module a été patché quand on arrive sur un projet existant
   Rule 2 : Arborescence
Respecter l'architecture Drupal :

DrupalCamp Paris 2019                                                                           22/33
/modules/contrib
/modules/custom
/themes/custom
etc
Et PSR4
    Rule 3 : Suivre les bonnes pratiques Symfony
bonnes pratiques PSR
injection de dépendances
étendre plutôt que surcharger
    Rule 3-bis : injection de dépendance
Utiliser l'injection de dépendance plutôt que les version statiques.
    Rule 4 : Ne plus utiliser le .module
Seulement pour les hooks indispensables.
    Rule 5 : automatisation
Faire des scripts !
Utiliser Git
Utiliser settings.local.php
Utiliser des variables d'environnement
    Rule 6 : Multilingue
Inclus dans le core D8.
Rajout personnel : METTEZ DES CONTEXTES DANS VOS T() BORDEL (bisous)
    Rule 7 : Gestion des droits
Créer ses propres droits/permissions
Permissions aussi sur les route
Possibilité d'avoir dans le controller des accès plus compliqués : checkAccess
    Rule 8 : Routing
Utiliser des chemins avec des paramètres plutôt que des arguments (/plop/1 plutôt que /plop?
node=1)
En bonus, l'entité sera chargée directement
    Rule 9 : Lien de menu d'administration
Faire des route pour les form admin custom
    Rule 10 : ENTITY !!!!!
Utiliser les entités...
hook_entity_info_alter pour les entités existantes (oups pour la règle 4)
entités = CRUD, mieux que tables custom
    Rule 11 : Les requêtes
Outils pour générer les requêtes en s'affranchissant de la base de données.
Éviter les requêtes en dur.
Utiliser les méthodes de stockage des entités plutôt que les requêtes

DrupalCamp Paris 2019                                                                          23/33
Ne sélectionner que l'id puis charger ensuite avec un loadMutliple (plus performant)
Utiliser les caches correctement (long story)
Utiliser first() plutôt que get(0) +1
    Rule 12 : Templates
Respecter un modèle MVC
Pas de markup dans les classes ! Créer des templates et utiliser Twig.
Ne pas faire de métier dans les templates : ce n'est que de l'af fichage. Passer uniquement la donnée
au template.
Pas de requêtes dans template ou dans le preprocess
Un preprocess doit surtout filtrer/ordonner
    Rule 13 : Charger un asset
Dé finir les assets dans le fichier monmodule.libraries.yml
Attacher cet asset au tableau de rendu à l'endroit où on en a besoin (adieu drupal_add_js et
drupal_add_css!)
    Rule 14 : Gestion des caches
Ne jamais désactiver les caches ! (sauf en dev en local)
Caches activés par défaut sur D8
Utiliser les caches tags pour gérer l'invalidation des caches
Créer ses propres tags et exécuter leur invalidation si besoin
(ajout personnel : module handy cache https://www.drupal.org/project/handy_cache_tags)
    Rule 15 : Utilisateur de test
Tester en anonyme, avec les différents rôles
Rappel : le superadmin ne passe même pas dans les règles de gestion de droit, on bypass tout en
user 1
Outil sur Firefox pour conteneuriser par onglet : on peut tester un utilisateur par onglet, super
pratique pour tester (https://addons.mozilla.org/fr/ firefox/addon/multi-account-containers/ ?)
    Rule 16 : Nommage des champs
Inutile de pré fixer les champs
    Rule 16 bis : nommage des champs
    Rule 17 : Composer
Si tu n'as pas composer, ça veut dire que c'est toi qui fait la gestion des paquets... Qui peut faire
con fiance à un humain ?
Composer --> versionning
Composer install VS composer update
    Rule 18 : Contrib VS custom
Véri fier toujours qu'un module contrib existe avant de se lancer (souvent plus complet, gestion de
plus de cas)
S'il existe :
véri fier le nombre d'utilisation
véri fier s'il est maintenu
la qualité du code

DrupalCamp Paris 2019                                                                            24/33
vaut-il vraiment la peine au regard du nombre de fonctionnalités qu'il propose pour votre besoin
(usine à gaz ?)
--> Contribuer au projet peut aussi être une solution.
Plus vous avez de module, plus vous alourdissez votre site.
   Rule 19 : Validation des données
Penser à valider côté serveur.
Utiliser Form API.
Fonctionnalité Ajax de Drupal
Méthode de nettoyage (https://api.drupal.org/api/drupal/core%21includes
%21common.inc/group/sanitization/8.6.x)
 - Html::escape
 - Xss:: filter
 - Xss:: filterAdmin
   Rule preque 20 : Performances
Externaliser ce qui peut être externalisé
Varnish
memcache/Redis
CDN
OpCode
Solr/Elastic Search
   Rule 20 : Clear cache !
Obviously.
Conclusion
Gibbs-Slap : si tu ne fais pas pour toi, rappelle-toi qu'il y a toujours un Gibbs derrière toi pour t'en
coller une !
--> Permet durant les tester de faire en sorte que 1 onglet firefox = 1 firefox
https://addons.mozilla.org/fr/ firefox/addon/multi-account-containers/?src=search

2.12. Micro Site
Fabrice Scoyer aka Flocon de Toile @ flocondetoile / La page sur DrupalCamp / La présentation /
La vidéo Youtube

Micro site, module contrib
Alternative au solutions excistante pour l'usine site
Solution existante
   •   Multisite du CORE
   •   Domain access
Micro Site : Pourquoi, comment, pour qui ?
Lien du module : https://www.drupal.org/project/micro_site
Inspiré de la gestion du multi site avec Typo3

DrupalCamp Paris 2019                                                                               25/33
Domain Access : limité sur le nombre de site, gestion des sites laborieuses
Multi-site natif : long a à mettre en place, parfois trop gros (une instance Drupal pour générer une
one page)
Micro site :
   •   Pour qui ?
   •   Avant bien cibler le besoin
   ➢ Complexité des sites cibles
   ➢ Partage de contenu / utilisateurs
   ➢ Pro fil des (futur) gestionnaire des sites
   ➢ Nombre de sites potentiels
   ➢ Maintenance & ressources
   ➢ Contexte et organisation
Cibles du micro site : universités, entreprise, fédérations, associations nationales...
Concept fondamentaux de Micro Site
Créer un site depuis une instance D8, comme si on créer un billet de blog : simpli fier la création de
micro-site
Micro site veut :
   ➢ permettre de propulser et gérer des centaines de site au sein d'une même instance D8
   ➢ donner un espace d'admin dédié et simpli fié pour chaque site
   ➢ permettre le partage de contenu
Architecture de MS
   ➢ basé sur une entité de contenu (site)
   ➢ Page d'accueil est l'entité Site elle même
   ➢ Archi assez proche de Domain Access mais la différence est est son approche par un type de
     contenu
   ➢ règle du 80/20 : 80% des besoins sont couverts par 20% des efforts (les besoins restants
     seront couverts par une implémentation personnalisée)
   ➢ gestion des droits : aucune info portée par entité User, tout sur entité Site
Ecosystème de MS
Fait pour créer des sites OnePage
Extensions :
   •   Micro Menu
   •   Micro Node
   •   Micro User
   •   Micro SSO
   •   Micro Taxonomy
   •   Micro Path : alias unique par micro site

DrupalCamp Paris 2019                                                                            26/33
•   Micro Theme : un theme différent par micro site
   •   Micro Contact
   •   Micro Sitemap
   •   Micro Simple Sitemap
   •   Micro Bibcite
Interagir avec MS
Utilisable avec tout les modules contrib D8
Possibilité de faire des surcharges dynamiques sur des con figurations (ex : formulaires de
con figuration des modules Matomo/Piwik, Sitemap...)
Possibilité de faire des surcharges sur les droits d'accès
Contribuer à MS
   •   Tests (cas d'auges / automatisés)
   •   Rapports de bug (issue queue)
   •   Documentation
   •   Vos propres modules micro_XXX

3. TRACK DÉCOUVERTE
3.1. Drupal 8 : présentation, utilisation et installation de Drupal et de modules.
Choisir son module :
   •   Qui le maintient ? Quel est le niveau du lead dev ?
   •   Les bugs reports
   •   L'activité des issues, des devs
   •   Version de module
   •   Dernière version dev
simplytest.me : site de deploiement et de test de module.

3.2. Drupal 8, as-tu du Coeur ? (Drupal et les modules du coeur)
Présentation de Léon Cros @chipway / La présentation
Formation Drupal 8/7, Audit et conseil accompagnement et Dev.
Module Drupal = type d'extension => fonctionnalité / traitement
Force : polyvalence
Une fonctionnalité donne un module
Explorer le coeur avant d'installer la centaine de modules qui ne font que customiser le Core
   ➢ 78 modules dans le Core
Modules qui rendent D8 immédiatement utilisable
   •   ckEditor

DrupalCamp Paris 2019                                                                           27/33
•   contextual
   •   editor
   •   Filter
   •   Quick Edit
   •   Toolbar
ckeditor natif avec intégration HTML en différent mode (Basic, restricted, Full)
Possibilité de customiser l'éditeur lui même pour ajouter des fonctionnalités.
Gestion de droits d'édition en fonction des pro fils.
Drupal8 => données structurées mais aussi structures de contenus.
Possibilités de créer des pages web et des webservices avec le même work flow
Structuration des données :
   •   ...
   •   book
   •   forum
Structuration /type de champs
   •   Comment
   •   Datetime (range)
   •   entity_reference
   •   field field UI
   •   file
   •   image
   •   link
   •   media,
   •   libray(experimental)
   •   options
   •   telephone
   •   text
Passer par des types de champs sous Drupal, facilite la vie. Il n'est pas conseillé de tout mettre en
type texte.
Cela permet aussi une validation automatique de format.
Les types d'entités sont extensibles
Ajout de champ possible
Views est un outil de requetage sur les entités.
Il permet de filtrer, trier, contextualisé et af fiche les résultats par type.

DrupalCamp Paris 2019                                                                             28/33
Vous pouvez aussi lire