29
Architecture des types de contenu : ce qui a changé en drupal 7 Présentation Soirée Communautaire DrupalFr le 08/11/2012 La Cantine, Paris

Architecture des types de contenu : ce qui a changé en Drupal 7

  • Upload
    slybud

  • View
    2.232

  • Download
    0

Embed Size (px)

DESCRIPTION

Présentation Soirée Communautaire DrupalFr le 08/11/2012 La Cantine, Paris Objectifs de la présentation : * Pour qui : chefs de projet, architectes et site builders * Pour quoi : Avoir une vue globale sur les outils drupal (core + modules contrib) à disposition * Dans quel objectif : outils pour traduire des besoins fonctionnels en architecture technique drupal maintenable et scalable * Cette présentation est : un panorama non exhaustif * Cette présentation n'est pas : axée sur les détails de l'implémentation technique (« ça va manquer de démo ») * Combien de temps ça va durer : aucune idée

Citation preview

Page 1: Architecture des types de contenu : ce qui a changé en Drupal 7

Architecture des types de contenu : ce qui a changé en drupal 7

Présentation Soirée Communautaire DrupalFr

le 08/11/2012 La Cantine, Paris

Page 2: Architecture des types de contenu : ce qui a changé en Drupal 7

• SS2L fondée en 2001 : http://www.ows.fr• Effectif actuel : 15 salariés •/me : Sylvain Moreau

• @slybud•http://drupal.org/user/118258•http://www.linkedin.com/in/slybud

• « Nous faisons de gros sites drupal et nous le faisons bien ! »

Faisons Connaissance (« mais rapide, hein ?»)

Page 3: Architecture des types de contenu : ce qui a changé en Drupal 7

Objectifs de la présentation

• Pour qui : chefs de projet, architectes et site builders• Pour quoi : Avoir une vue globale sur les outils drupal

(core + modules contrib) à disposition

• Dans quel objectif : outils pour traduire des besoins fonctionnels en architecture technique drupal maintenable et scalable

• Cette présentation est : un panorama non exhaustif• Cette présentation n'est pas : axée sur les détails de

l'implémentation technique (« ça va manquer de démo »)• Combien de temps ça va durer : aucune idée

Page 4: Architecture des types de contenu : ce qui a changé en Drupal 7

Plan de la présentation

• Rappel sur l'importance des types de contenu• Les objets drupal : D6 => D7

• Les liaisons entre les objets drupal : D6 => D7

• Le minimum UI pour les types de contenus : D6 => D7• Pistes/Tips & Tricks• Questions/Réponses

Page 5: Architecture des types de contenu : ce qui a changé en Drupal 7

Importance des types de contenu/objets

• Architecture même du CMS : nodes/taxonomies/users (...)

• A concevoir avant de commencer à développer/intégrer

• Traduire le fonctionnel en technique (modélisation)

• Rester sur la route et bénéficier de l'écosystème

Page 6: Architecture des types de contenu : ce qui a changé en Drupal 7

Les objets Drupal

• Field API

• Users : D6 => D7

• Taxonomies : D6 => D7

• Nodes : D6 => D7

• Comments : D6 => D7

• Entities : D7

Page 7: Architecture des types de contenu : ce qui a changé en Drupal 7

Field API : la révolution

• Drupal 6 : Les différents objets sont fieldables (cf infra), mais aucune unification

• Drupal 7 : Field in core, tout objet est fieldable de manière unifiée

Page 8: Architecture des types de contenu : ce qui a changé en Drupal 7

Objet Drupal : User• Drupal 6 : Fieldable

• Méthodes : profile (module core), content_profile

• Drupal 7 : Field API baby

• Pour aller plus loin : profile2 (profil fieldable par role, champs privés...)

Page 9: Architecture des types de contenu : ce qui a changé en Drupal 7

Objet Drupal : Taxo

• Drupal 6 : Fieldable

• Méthodes : taxonomy_image, term_fields

• Drupal 7 : Field API baby

• Dans les deux cas : catégoriser/classer

Page 10: Architecture des types de contenu : ce qui a changé en Drupal 7

Objet Drupal : Node

• Drupal 6 : Fieldable

• Méthodes : cck et tous les modules contrib

• Drupal 7 : Field API baby

Page 11: Architecture des types de contenu : ce qui a changé en Drupal 7

Objet Drupal : Comment

• Drupal 6 : Fieldable (?!)

• Méthodes : nodecomment, comment_fields

• Drupal 7 : Field API baby

• Le plus : les comments sont fieldable par type de contenu !

Page 12: Architecture des types de contenu : ce qui a changé en Drupal 7

Objet Drupal : Entity• Changement majeur D7

• Tous les objets précédents sont en fait devenus des entities

• Toute entity est fieldable avec Field API (baby)

• Quand choisir une entité plutot qu'un node ?

• Connaissances en développement requises

• Exemple d'entité : product

Page 13: Architecture des types de contenu : ce qui a changé en Drupal 7

Liaisons (simples) entre les objets drupal

• D6 : Tour d'horizon

• D7 : references

• D7 : Entity Reference

• La guerre des références

Page 14: Architecture des types de contenu : ce qui a changé en Drupal 7

Liaisons D6 : panorama• Liaison node → node : nodereference

• Liaison node → user : userreference

• Liaision node → taxo : core (pauvre) ou content_taxonomy

• Liaison taxo → taxo : core mais mono vocabulaire (patch existe)

• Eventail finalement pauvre

• Gestion des back references : nodereferrer ou cnr

Page 15: Architecture des types de contenu : ce qui a changé en Drupal 7

Liaisons D7 : la liberté• Tout objet est fieldable => les 

possibilités sont infinies

• Les Back References sont gérées dans views => plus besoin de modules de type nodereferrer

• On peut donc s'affranchir du typage et lier des termes de taxo à tout autre objet par exemple

Page 16: Architecture des types de contenu : ce qui a changé en Drupal 7

Liaisons D7 : references• Maintainers : fgm, yched,

KarenS

• Fournit trois types de Fields : – Node reference– User Reference– Term reference

• Couvre 95% des besoins d'un projet

Page 17: Architecture des types de contenu : ce qui a changé en Drupal 7

Liaisons D7 : entity reference• Maintainer : DamZ

• Permet de lier tout type d'entité (dont node, user, taxo, etc...)

• Permet de mélanger dans un champ plusieurs types d'entité

• Permet de lier dans un champ plusieurs bundle d'entités : des termes de taxo au sein de 2 voc différents

• Un peu plus complexe et encore en rc (5)

Page 18: Architecture des types de contenu : ce qui a changé en Drupal 7

Alors, lequel choisir ?• Les 2 sont de qualité

• Les 2 peuvent cohabiter

• Chemin de migration plus clair depuis D6 pour references

• UI plus simple et familière pour references

• Entity Reference gère des cas impossibles avec references

• Il se dit que references ne sera plus maintenu

• Entity Reference est un peu plus complexe pour les devs

Page 19: Architecture des types de contenu : ce qui a changé en Drupal 7

UI (minimum) pour les types de contenus

• Grouper les champs

• Utiliser les multigroupes

• Améliorer l'UI des liaisons

Page 20: Architecture des types de contenu : ce qui a changé en Drupal 7

UI : Grouper les champs• Ne pas hésiter à abuser des 

fieldsets et de leurs propriétés

• Osez les groupes dans les groupes dans les groupes

• En D7 : variez vos formats de groupes (Vertical ou Horizontal Tabs, accordéon..)

Page 21: Architecture des types de contenu : ce qui a changé en Drupal 7

UI : Les multigroupes• Permet de répéter des

occurences de plusieurs Fields

• En D6 : CCK mais version 3

• En D7 : field_collection (entité à part)

• Exemples : générique émission, diaporama

Page 22: Architecture des types de contenu : ce qui a changé en Drupal 7

UI : Améliorer les liaisons• Objectifs :

– Améliorer l'autocomplete

– Avoir un contrôle fin (view) sur les objets référencés

– Créer un objet sans quitter le form en cours

• En D6 : noderelationships

• En D7 : references_dialog (fonctionne avec references et entityreference)

Page 23: Architecture des types de contenu : ce qui a changé en Drupal 7

Tips & Tricks en Vrac• Un module par content

type ?

• Gestion des taxonomies hiérarchiques

• Date : beware

• EntityFieldQuery est ton ami

• Gestion des medias : scald :)

Page 24: Architecture des types de contenu : ce qui a changé en Drupal 7

TnT : 1 module par CT ?• Utile en D6 car :

– Hooks non disponibles autrement

– Permettait de supprimer le body

• En D7, plus vraiment d'intérêt

• Cepenant, il est sain de regrouper ses hooks ;-)

Page 25: Architecture des types de contenu : ce qui a changé en Drupal 7

TnT : Taxo Hiérarchiques

• On est tous confrontés un jour ou l'autre

• D6 : hierarchical_select mais peu stable et plus maintenu (en 7 aussi)

• Alternative D7 : term_reference_tree

Page 26: Architecture des types de contenu : ce qui a changé en Drupal 7

TnT : Date• Le couteau suisse du 

champ date => usine à gaz

• Mais pas moyen de faire autrement

• Tout champ date est dans un fieldset !

• Mieux vaut bien choisir son format de stockage dés le début

Page 27: Architecture des types de contenu : ce qui a changé en Drupal 7

TnT : EntityFieldQuery• Nouvelle classe

• Permet de requêter sur les entités avec une couche d'abstraction

• LA façon de faire des requêtes sur les entités

• http://drupal.org/node/1343708

Page 28: Architecture des types de contenu : ce qui a changé en Drupal 7

• http://drupal.org/project/scald

• </autopromo>

• S'appuie sur la puissance des entités

TnT : Gestion des medias

Page 29: Architecture des types de contenu : ce qui a changé en Drupal 7

Discutons !