SlideShare une entreprise Scribd logo
1  sur  35
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.
INFORMATIONS DE CONTEXTEINFORMATIONS DE CONTEXTE
Les choix présentés ont été faits en milieu 2011, l'univers de
la contrib a évolué depuis !
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
FORMULAIRE D'ÉDITIONFORMULAIRE D'ÉDITION
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.
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.
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['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
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
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 CATALOGUE,
C'EST PARFOIS RÉPÉTITIFC'EST PARFOIS RÉPÉTITIF
FORMULAIRE D'ÉDITIONFORMULAIRE D'ÉDITION
SOLUTIONSOLUTION
Ouvrir le formulaire d'édition "en ligne", appelons ça une
"megarow", affichée dans une vue cela donne donc
Views Megarow ™ ©.
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 ENTITÉ N'ÉTAIT
PAS POSSIBLE...PAS POSSIBLE...
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 la définition de l'entité.
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
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.
SOLUTION 1SOLUTION 1
SOLR, FACETTES, FULLTEXT MULTI-COLONNES, AGGREGATIONSOLR, FACETTES, FULLTEXT MULTI-COLONNES, AGGREGATION
DE DONNÉES, VBODE DONNÉES, VBO
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 {
}
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
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.
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é...).
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
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.
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...
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 ©
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
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
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;
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
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

Contenu connexe

En vedette

Catalogue 3
Catalogue 3Catalogue 3
Catalogue 3domfeste
 
ImagenesRepaso
ImagenesRepasoImagenesRepaso
ImagenesRepasoDavid
 
Hijo de tigre sale pintado
Hijo de tigre sale pintadoHijo de tigre sale pintado
Hijo de tigre sale pintadoDIANA
 
CUESTIONARIO
CUESTIONARIOCUESTIONARIO
CUESTIONARIOpancho
 
Immigrants et marche du travail au Québec
Immigrants et marche du travail au QuébecImmigrants et marche du travail au Québec
Immigrants et marche du travail au QuébecProspection
 
Amistad
AmistadAmistad
Amistadtamy93
 
Lenguaje relacional estandar (sql)
Lenguaje relacional estandar (sql)Lenguaje relacional estandar (sql)
Lenguaje relacional estandar (sql)saulitho
 
SERMON,"BUSCANDO A UN PADRE" escuche el mensaje en www.iglesiasouthwinds.com
 SERMON,"BUSCANDO A UN PADRE" escuche el mensaje en www.iglesiasouthwinds.com SERMON,"BUSCANDO A UN PADRE" escuche el mensaje en www.iglesiasouthwinds.com
SERMON,"BUSCANDO A UN PADRE" escuche el mensaje en www.iglesiasouthwinds.comRoberto Jimenez
 
Ejemplo 1
Ejemplo 1Ejemplo 1
Ejemplo 1bianca
 
Murales power seillant
Murales power seillantMurales power seillant
Murales power seillantterceero!
 
Scd strasbourg u2-u3 exposition première guerre mondiale
Scd strasbourg  u2-u3 exposition première guerre mondialeScd strasbourg  u2-u3 exposition première guerre mondiale
Scd strasbourg u2-u3 exposition première guerre mondialeMarie-Christine Krencker
 
Une petite histoire du jeu vidéo: de la technologie aux media
Une petite histoire du jeu vidéo: de la technologie aux mediaUne petite histoire du jeu vidéo: de la technologie aux media
Une petite histoire du jeu vidéo: de la technologie aux mediaguest192045
 
Numérique et culture scientifique, technique et industrielle
Numérique et culture scientifique, technique et industrielleNumérique et culture scientifique, technique et industrielle
Numérique et culture scientifique, technique et industrielleLaurent Chicoineau
 
Introduction portail gestion des risques intermap
Introduction portail gestion des risques intermapIntroduction portail gestion des risques intermap
Introduction portail gestion des risques intermapsalesATintermap
 

En vedette (20)

Catalogue 3
Catalogue 3Catalogue 3
Catalogue 3
 
ImagenesRepaso
ImagenesRepasoImagenesRepaso
ImagenesRepaso
 
Encuestas
EncuestasEncuestas
Encuestas
 
Hijo de tigre sale pintado
Hijo de tigre sale pintadoHijo de tigre sale pintado
Hijo de tigre sale pintado
 
CUESTIONARIO
CUESTIONARIOCUESTIONARIO
CUESTIONARIO
 
Immigrants et marche du travail au Québec
Immigrants et marche du travail au QuébecImmigrants et marche du travail au Québec
Immigrants et marche du travail au Québec
 
Amistad
AmistadAmistad
Amistad
 
Carabela power
Carabela powerCarabela power
Carabela power
 
Caso Agua Mineral Verteax
Caso Agua Mineral VerteaxCaso Agua Mineral Verteax
Caso Agua Mineral Verteax
 
Lenguaje relacional estandar (sql)
Lenguaje relacional estandar (sql)Lenguaje relacional estandar (sql)
Lenguaje relacional estandar (sql)
 
SERMON,"BUSCANDO A UN PADRE" escuche el mensaje en www.iglesiasouthwinds.com
 SERMON,"BUSCANDO A UN PADRE" escuche el mensaje en www.iglesiasouthwinds.com SERMON,"BUSCANDO A UN PADRE" escuche el mensaje en www.iglesiasouthwinds.com
SERMON,"BUSCANDO A UN PADRE" escuche el mensaje en www.iglesiasouthwinds.com
 
Niga
NigaNiga
Niga
 
Ejemplo 1
Ejemplo 1Ejemplo 1
Ejemplo 1
 
Murales power seillant
Murales power seillantMurales power seillant
Murales power seillant
 
Scd strasbourg u2-u3 exposition première guerre mondiale
Scd strasbourg  u2-u3 exposition première guerre mondialeScd strasbourg  u2-u3 exposition première guerre mondiale
Scd strasbourg u2-u3 exposition première guerre mondiale
 
Mi historia
Mi historiaMi historia
Mi historia
 
Une petite histoire du jeu vidéo: de la technologie aux media
Une petite histoire du jeu vidéo: de la technologie aux mediaUne petite histoire du jeu vidéo: de la technologie aux media
Une petite histoire du jeu vidéo: de la technologie aux media
 
Numérique et culture scientifique, technique et industrielle
Numérique et culture scientifique, technique et industrielleNumérique et culture scientifique, technique et industrielle
Numérique et culture scientifique, technique et industrielle
 
Introduction portail gestion des risques intermap
Introduction portail gestion des risques intermapIntroduction portail gestion des risques intermap
Introduction portail gestion des risques intermap
 
Tics
TicsTics
Tics
 

Similaire à DrupalCamp2013 - "libérez drupal"

Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet DrupalAdyax
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisantcluelessjoe
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023SpikeeLabs
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
121102 aetc_consultingconf4d
121102 aetc_consultingconf4d121102 aetc_consultingconf4d
121102 aetc_consultingconf4dNathalie Richomme
 
Vis ma vie de chef de projet Drupal | Drupagora 2013, Paris
Vis ma vie de chef de projet Drupal | Drupagora 2013, ParisVis ma vie de chef de projet Drupal | Drupagora 2013, Paris
Vis ma vie de chef de projet Drupal | Drupagora 2013, ParisActency
 
Le pattern View Model avec Symfony2
Le pattern View Model avec Symfony2Le pattern View Model avec Symfony2
Le pattern View Model avec Symfony2RomainKuzniak
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonyVincent Composieux
 
Adaptation d'exécution de modèles : vers des iDSML adaptables
Adaptation d'exécution de modèles : vers des iDSML adaptablesAdaptation d'exécution de modèles : vers des iDSML adaptables
Adaptation d'exécution de modèles : vers des iDSML adaptablesOlivier Le Goaër
 
Sybase Connect Atelier Power Builderv2
Sybase Connect Atelier Power Builderv2Sybase Connect Atelier Power Builderv2
Sybase Connect Atelier Power Builderv2apratt72
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Adrian CID ALMAGUER
 
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Société ELOSI
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 

Similaire à DrupalCamp2013 - "libérez drupal" (20)

Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet Drupal
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015
 
sfPot aop
sfPot aopsfPot aop
sfPot aop
 
VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
121102 aetc_consultingconf4d
121102 aetc_consultingconf4d121102 aetc_consultingconf4d
121102 aetc_consultingconf4d
 
Vis ma vie de chef de projet Drupal | Drupagora 2013, Paris
Vis ma vie de chef de projet Drupal | Drupagora 2013, ParisVis ma vie de chef de projet Drupal | Drupagora 2013, Paris
Vis ma vie de chef de projet Drupal | Drupagora 2013, Paris
 
Serveur node red
Serveur node redServeur node red
Serveur node red
 
Le pattern View Model avec Symfony2
Le pattern View Model avec Symfony2Le pattern View Model avec Symfony2
Le pattern View Model avec Symfony2
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
Adaptation d'exécution de modèles : vers des iDSML adaptables
Adaptation d'exécution de modèles : vers des iDSML adaptablesAdaptation d'exécution de modèles : vers des iDSML adaptables
Adaptation d'exécution de modèles : vers des iDSML adaptables
 
Cours spring
Cours springCours spring
Cours spring
 
Sybase Connect Atelier Power Builderv2
Sybase Connect Atelier Power Builderv2Sybase Connect Atelier Power Builderv2
Sybase Connect Atelier Power Builderv2
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !
 
Dreamforce Global Gathering
Dreamforce Global GatheringDreamforce Global Gathering
Dreamforce Global Gathering
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 

DrupalCamp2013 - "libérez drupal"

  • 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. 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. 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
  • 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. 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. EXEMPLE DE FORM MODEEXEMPLE DE FORM MODE
  • 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. 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. EXEMPLE DE FORM MODEEXEMPLE DE FORM MODE
  • 11. COMMENT M'EN RESSERVIR ?COMMENT M'EN RESSERVIR ? Form modes > sandbox Drupal 7 Field extra widgets > projet Drupal 7
  • 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
  • 14. SOLUTIONSOLUTION Ouvrir le formulaire d'édition "en ligne", appelons ça une "megarow", affichée dans une vue cela donne donc Views Megarow ™ ©.
  • 15. BALANCE LA DÉMO !BALANCE LA DÉMO !
  • 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. EDITION D'ENTITÉEDITION D'ENTITÉ Mais ça c'était avant ...
  • 19. SOLUTIONSOLUTION UTILISER LE MODULE BUNDLESWITCHERUTILISER LE MODULE BUNDLESWITCHER Disponible sur Drupal.org, recharche la définition de l'entité.
  • 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. 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. SOLUTION 1SOLUTION 1 SOLR, FACETTES, FULLTEXT MULTI-COLONNES, AGGREGATIONSOLR, FACETTES, FULLTEXT MULTI-COLONNES, AGGREGATION DE DONNÉES, VBODE DONNÉES, VBO
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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