LIBÉREZ DRUPALLIBÉREZ DRUPAL
VOTRE BACKEND A BESOIN D'AMOUR !VOTRE BACKEND A BESOIN D'AMOUR !
L'univers de la contrib vous...
INFORMATIONS DE CONTEXTEINFORMATIONS DE CONTEXTE
Les choix présentés ont été faits en milieu 2011, l'univers de
la contrib...
CRÉATION D'UNE ENTITÉCRÉATION D'UNE ENTITÉ
CONSTAT NCONSTAT N°°1 : UN FORMULAIRE DRUPAL ÇA PEUT VITE1 : UN FORMULAIRE DRUP...
FORMULAIRE D'ÉDITIONFORMULAIRE D'ÉDITION
SOLUTION POUR L'UXSOLUTION POUR L'UX
INTRODUIRE LE CONCEPT DES FORM MODESINTRODUIRE LE CONCEPT DES FORM MODES
Vous connais...
FORM MODESFORM MODES
Un formulaire est rendu selon son form mode, ses champs
deviennent éditables ou en lecture seule selo...
EXEMPLE DE FORM MODEEXEMPLE DE FORM MODE
FORM MODE DÉFINI DEPUIS LE CODEFORM MODE DÉFINI DEPUIS LE CODE
// Exported field: 'entity-bundle-fieldname'.
$fields['enti...
SUGGESTIONS DES TEMPLATES DE FORM MODE DANS VOTRESUGGESTIONS DES TEMPLATES DE FORM MODE DANS VOTRE
THÈME DE BACKENDTHÈME D...
EXEMPLE DE FORM MODEEXEMPLE DE FORM MODE
COMMENT M'EN RESSERVIR ?COMMENT M'EN RESSERVIR ?
Form modes > sandbox Drupal 7
Field extra widgets > projet Drupal 7
EDITION D'ENTITÉSEDITION D'ENTITÉS
CONSTAT NCONSTAT N°°2 : LORSQUE J'ADMINISTRE MON CATALOGUE,2 : LORSQUE J'ADMINISTRE MON...
FORMULAIRE D'ÉDITIONFORMULAIRE D'ÉDITION
SOLUTIONSOLUTION
Ouvrir le formulaire d'édition "en ligne", appelons ça une
"megarow", affichée dans une vue cela donne do...
BALANCE LA DÉMO !BALANCE LA DÉMO !
EDITION D'ENTITÉEDITION D'ENTITÉ
CONSTAT NCONSTAT N°°3 : CHANGER LE BUNDLE D'UNE ENTITÉ N'ÉTAIT3 : CHANGER LE BUNDLE D'UNE...
EDITION D'ENTITÉEDITION D'ENTITÉ
Mais ça c'était avant ...
CONTINUE LA DÉMOCONTINUE LA DÉMO
SOLUTIONSOLUTION
UTILISER LE MODULE BUNDLESWITCHERUTILISER LE MODULE BUNDLESWITCHER
Disponible sur Drupal.org, recharche l...
GÉRER DES LISTINGS IMPORTANTSGÉRER DES LISTINGS IMPORTANTS
CONSTAT NCONSTAT N°°4 : ADMINISTRER UN LARGE CATALOGUE EST4 : A...
GÉRER DES LISTINGS IMPORTANTSGÉRER DES LISTINGS IMPORTANTS
Optimisez vos écrans de listings :
Faites des listings adaptés ...
SOLUTION 1SOLUTION 1
SOLR, FACETTES, FULLTEXT MULTI-COLONNES, AGGREGATIONSOLR, FACETTES, FULLTEXT MULTI-COLONNES, AGGREGAT...
SOLUTION 2SOLUTION 2
CRÉEZ VOS PROPRES PLUGINS POUR ÉTENDRE L'API DE VIEWS.CRÉEZ VOS PROPRES PLUGINS POUR ÉTENDRE L'API DE...
GÉRER DES TRANSITIONS DE WORKFLOWGÉRER DES TRANSITIONS DE WORKFLOW
CONSTAT NCONSTAT N°°5 : AUTORISER DES TRANSITIONS DE WO...
GÉRER DES TRANSITIONS DE WORKFLOWGÉRER DES TRANSITIONS DE WORKFLOW
Contrib ne permet de gérer que des transitions de nodes...
SOLUTIONSOLUTION
UTILISER LE MODULE STATEFIELDUTILISER LE MODULE STATEFIELD
Disponible sur Drupal.org, stocke un état (bro...
APPRÉHENDER DES PROBLÉMATIQUES MÉTIERAPPRÉHENDER DES PROBLÉMATIQUES MÉTIER
À LA MODE DRUPALÀ LA MODE DRUPAL
CONSTAT NCONST...
COMMENT GÉRER AU MIEUX LA RÉPÉTITION D'UN CONTENUCOMMENT GÉRER AU MIEUX LA RÉPÉTITION D'UN CONTENU
AVEC QUELQUES VARIANTES...
EXEMPLEEXEMPLE
Un produit est défini par l'équipe Marketing en France mais
doit être affiné par les équipes du Japon et de...
SOLUTIONSOLUTION
UTILISER LE MODULE ENTITY OVERRIDEUTILISER LE MODULE ENTITY OVERRIDE
Définir une relation entre 2 entités...
A QUOI ÇA PEUT BIEN SERVIR ?A QUOI ÇA PEUT BIEN SERVIR ?
Cas d'utilisation : Sucharge locale par site
Pour un site donné, ...
UNE RELATION ENTRE 2 ENTITÉS DÉFINIE AUUNE RELATION ENTRE 2 ENTITÉS DÉFINIE AU
NIVEAU DU FIELDNIVEAU DU FIELD
Simple à met...
EXEMPLE DE DÉFINITIONEXEMPLE DE DÉFINITION
function hook_entity_override_info() {
$ret = array(
$override_name => array(
/...
MÉLANGEONS TOUT ÇA AVEC D'AUTRES IDÉESMÉLANGEONS TOUT ÇA AVEC D'AUTRES IDÉES
Des entites pour les menus + TreeField
Entity...
DES BÉNÉFICES PAYANTSDES BÉNÉFICES PAYANTS
Intégration dans D8
Réutilisation dans d'autres projets
Reversement de contribu...
Upcoming SlideShare
Loading in...5
×

DrupalCamp2013 - "libérez drupal"

949

Published on

Slides de présentation de la session "Libérez Drupal" lors du DrupalCamp Paris 2013
de Julien Dubois et Laurent Chardin.

Julien Dubois - @Artusamak
Laurent Chardin - @LaurentChardin

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
949
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

DrupalCamp2013 - "libérez drupal"

  1. 1. LIBÉREZ DRUPALLIBÉREZ DRUPAL VOTRE BACKEND A BESOIN D'AMOUR !VOTRE BACKEND A BESOIN D'AMOUR ! L'univers de la contrib vous permet de faire des choses mais vous bride aussi... Nous allons vous montrer comment rendre votre backend plus adapté avec quelques outils.
  2. 2. INFORMATIONS DE CONTEXTEINFORMATIONS DE CONTEXTE Les choix présentés ont été faits en milieu 2011, l'univers de la contrib a évolué depuis !
  3. 3. CRÉATION D'UNE ENTITÉCRÉATION D'UNE ENTITÉ CONSTAT NCONSTAT N°°1 : UN FORMULAIRE DRUPAL ÇA PEUT VITE1 : UN FORMULAIRE DRUPAL ÇA PEUT VITE DEVENIR TRÈS LONGDEVENIR TRÈS LONG
  4. 4. FORMULAIRE D'ÉDITIONFORMULAIRE D'ÉDITION
  5. 5. SOLUTION POUR L'UXSOLUTION POUR L'UX INTRODUIRE LE CONCEPT DES FORM MODESINTRODUIRE LE CONCEPT DES FORM MODES Vous connaissez les view modes pour afficher du contenu ? Imaginez le même concept appliqué à des formulaires.
  6. 6. FORM MODESFORM MODES Un formulaire est rendu selon son form mode, ses champs deviennent éditables ou en lecture seule selon la configuration faite. Si on y ajoute un peu de theming cela permet de rendre un même formulaire d'édtition d'entité de plusieurs façon selon l'utilisateur qui l'utilise.
  7. 7. EXEMPLE DE FORM MODEEXEMPLE DE FORM MODE
  8. 8. FORM MODE DÉFINI DEPUIS LE CODEFORM MODE DÉFINI DEPUIS LE CODE // Exported field: 'entity-bundle-fieldname'. $fields['entity-bundle-fieldname'] = array( 'field_config' => array(...), // field_config et tout le touti.. 'field_instance' => array( 'display' => array( // Configuration des view_mode ), 'forms' => array( // Configuration des form_mode 'form_role_manager' => array( 'type' => 'field_extrawidgets_hidden', ), 'form_role_legal' => array( 'type' => 'field_extrawidgets_read_only', ), ), // ... et toute la suite
  9. 9. SUGGESTIONS DES TEMPLATES DE FORM MODE DANS VOTRESUGGESTIONS DES TEMPLATES DE FORM MODE DANS VOTRE THÈME DE BACKENDTHÈME DE BACKEND entityforms_form__form_mode.tpl.php entityforms_form__form_mode__entity_type.tpl.php entityforms_form__form_mode__entity_type__bundle.tpl.php
  10. 10. EXEMPLE DE FORM MODEEXEMPLE DE FORM MODE
  11. 11. COMMENT M'EN RESSERVIR ?COMMENT M'EN RESSERVIR ? Form modes > sandbox Drupal 7 Field extra widgets > projet Drupal 7
  12. 12. EDITION D'ENTITÉSEDITION D'ENTITÉS CONSTAT NCONSTAT N°°2 : LORSQUE J'ADMINISTRE MON CATALOGUE,2 : LORSQUE J'ADMINISTRE MON CATALOGUE, C'EST PARFOIS RÉPÉTITIFC'EST PARFOIS RÉPÉTITIF
  13. 13. FORMULAIRE D'ÉDITIONFORMULAIRE D'ÉDITION
  14. 14. SOLUTIONSOLUTION Ouvrir le formulaire d'édition "en ligne", appelons ça une "megarow", affichée dans une vue cela donne donc Views Megarow ™ ©.
  15. 15. BALANCE LA DÉMO !BALANCE LA DÉMO !
  16. 16. EDITION D'ENTITÉEDITION D'ENTITÉ CONSTAT NCONSTAT N°°3 : CHANGER LE BUNDLE D'UNE ENTITÉ N'ÉTAIT3 : CHANGER LE BUNDLE D'UNE ENTITÉ N'ÉTAIT PAS POSSIBLE...PAS POSSIBLE...
  17. 17. EDITION D'ENTITÉEDITION D'ENTITÉ Mais ça c'était avant ...
  18. 18. CONTINUE LA DÉMOCONTINUE LA DÉMO
  19. 19. SOLUTIONSOLUTION UTILISER LE MODULE BUNDLESWITCHERUTILISER LE MODULE BUNDLESWITCHER Disponible sur Drupal.org, recharche la définition de l'entité.
  20. 20. GÉRER DES LISTINGS IMPORTANTSGÉRER DES LISTINGS IMPORTANTS CONSTAT NCONSTAT N°°4 : ADMINISTRER UN LARGE CATALOGUE EST4 : ADMINISTRER UN LARGE CATALOGUE EST PÉNIBLEPÉNIBLE
  21. 21. GÉRER DES LISTINGS IMPORTANTSGÉRER DES LISTINGS IMPORTANTS Optimisez vos écrans de listings : Faites des listings adaptés à vos utilisateurs avec des données et des filtres pertinents et permettez les actions en masse.
  22. 22. SOLUTION 1SOLUTION 1 SOLR, FACETTES, FULLTEXT MULTI-COLONNES, AGGREGATIONSOLR, FACETTES, FULLTEXT MULTI-COLONNES, AGGREGATION DE DONNÉES, VBODE DONNÉES, VBO
  23. 23. SOLUTION 2SOLUTION 2 CRÉEZ VOS PROPRES PLUGINS POUR ÉTENDRE L'API DE VIEWS.CRÉEZ VOS PROPRES PLUGINS POUR ÉTENDRE L'API DE VIEWS. Ca ne coût pas cher et ça peut rapporter gros ! Exemple : class viewsmatrix_plugin_style_matrix extends views_plugin_style_table { }
  24. 24. GÉRER DES TRANSITIONS DE WORKFLOWGÉRER DES TRANSITIONS DE WORKFLOW CONSTAT NCONSTAT N°°5 : AUTORISER DES TRANSITIONS DE WORKFLOW5 : AUTORISER DES TRANSITIONS DE WORKFLOW INTELLIGENTE EST DOULOUREUXINTELLIGENTE EST DOULOUREUX
  25. 25. GÉRER DES TRANSITIONS DE WORKFLOWGÉRER DES TRANSITIONS DE WORKFLOW Contrib ne permet de gérer que des transitions de nodes. Stockage de l'état de workflow dans un champ. Définition de transitions entre les états.
  26. 26. SOLUTIONSOLUTION UTILISER LE MODULE STATEFIELDUTILISER LE MODULE STATEFIELD Disponible sur Drupal.org, stocke un état (brouillon, non- publié, publié). Combiné à un module custom : définition de transitions autorisées d'un état à un autre et ajout de validation par état (champs obligatoire, contenu dans un format donné...).
  27. 27. APPRÉHENDER DES PROBLÉMATIQUES MÉTIERAPPRÉHENDER DES PROBLÉMATIQUES MÉTIER À LA MODE DRUPALÀ LA MODE DRUPAL CONSTAT NCONSTAT N°°6 : LA MULTIPLICATION DES CONTENUS PEUT6 : LA MULTIPLICATION DES CONTENUS PEUT INTRODUIRE DE LA REDONDANCEINTRODUIRE DE LA REDONDANCE
  28. 28. COMMENT GÉRER AU MIEUX LA RÉPÉTITION D'UN CONTENUCOMMENT GÉRER AU MIEUX LA RÉPÉTITION D'UN CONTENU AVEC QUELQUES VARIANTESAVEC QUELQUES VARIANTES Une entité est définie de façon globale et certaines de ses propriétés ou champs sont surchageables en local.
  29. 29. EXEMPLEEXEMPLE Un produit est défini par l'équipe Marketing en France mais doit être affiné par les équipes du Japon et de l'Italie sans dupliquer l'entité maître et sans être une nouvelle version. Je veux fusionner ses propriétés et je veux le faire intelligemment...
  30. 30. SOLUTIONSOLUTION UTILISER LE MODULE ENTITY OVERRIDEUTILISER LE MODULE ENTITY OVERRIDE Définir une relation entre 2 entités afin de les fusionner automatiquement. "Entity Reference On Stéroïds" (DamZ ™) Grosse contrib de FGM ©
  31. 31. A QUOI ÇA PEUT BIEN SERVIR ?A QUOI ÇA PEUT BIEN SERVIR ? Cas d'utilisation : Sucharge locale par site Pour un site donné, je veux modifier l'image du contenu master Cas d'utilisation : Surchage de traductions par langues
  32. 32. UNE RELATION ENTRE 2 ENTITÉS DÉFINIE AUUNE RELATION ENTRE 2 ENTITÉS DÉFINIE AU NIVEAU DU FIELDNIVEAU DU FIELD Simple à mettre en place Exportable Peut créer automatiquement une entité cible
  33. 33. EXEMPLE DE DÉFINITIONEXEMPLE DE DÉFINITION function hook_entity_override_info() { $ret = array( $override_name => array( // 'override_type' default: 'push' 'destination_type' => 'entity_destination', 'destination_bundle' => NULL, // wildcard 'source_management' => TRUE, 'source_type' => 'entity_overriding', 'source_bundle' => '', // unused in push overrides 'fields' => array(//... liste des champs de entity_destination), 'key_callback' => 'entity_destination_get_key', 'key_allowed_values_callback' => 'entity_destination_get_keys', ), ); return $ret;
  34. 34. MÉLANGEONS TOUT ÇA AVEC D'AUTRES IDÉESMÉLANGEONS TOUT ÇA AVEC D'AUTRES IDÉES Des entites pour les menus + TreeField EntityBundlePlugin pour avoir des moteurs de rendus OOP Synchroniser les entites avec Migrate over XMLRPC DMS : Device Management System Drupal en mode distribué ! Approche multi-sites / multi-devices des sites
  35. 35. DES BÉNÉFICES PAYANTSDES BÉNÉFICES PAYANTS Intégration dans D8 Réutilisation dans d'autres projets Reversement de contribution sur d.o

×