Makina Blog
Migrer de SPIP à Drupal
Comment imiter le comportement de SPIP et découvrir Drupal pour les amateurs de ce CMS.
J'ai donné l'an dernier plusieurs fois des formations à des équipes SPIP qui passaient (de façon autonome ou forcée) à Drupal. J'ai donc décidé de voir ce qu'il était possible de faire pour faciliter la transition entre ces deux CMS.
SPIP propose nombre de fonctionnalités similaires à Drupal, mais l'interface d'administration est différente, et il est possible de permettre aux habitués de SPIP de se retrouver bien plus facilement dans Drupal uniquement en ajustant cette interface.
Drupal augmente ses fonctionnalités grâce à des modules comme SPIP permet l'intégration des plugins : certaines fonctionnalités disponibles nativement dans SPIP nécessitent l'ajout dans Drupal de modules issus de la communauté (tout comme de nombreuses fonctionnalités natives de Drupal nécessitent des plugins additionnels dans SPIP). J'essaierai donc de traiter les principaux plugins SPIP dans cet article, car comparer les 2 CMS en regardant uniquement le cœur n'a pas de sens : quasiment aucun projet réel ne se contente d'utiliser les CMS sans leur ajouter des fonctionnalités.
À noter que je me concentre ici sur les fonctionnalités de SPIP qui n'existent pas dans Drupal, le propos de cet article n'est pas d'illustrer les fonctionnalités que Drupal ajoute. Ce n'est en aucun cas une critique de Drupal ou de SPIP. Les deux sont de bons CMS qui répondent à un besoin ciblé, et la différence entre leurs interfaces et fonctionnalités vient directement de leur objectif : même si on peut réaliser n'importe quel site avec l'un ou l'autre, SPIP est orienté pour être nativement un site éditorial avec plusieurs auteurs, Drupal est destiné à la création de sites plus "ambitieux" (selon les termes du créateur de Drupal Dries Buytaert), et manque dans le cœur d'outils que SPIP va proposer en standard, par exemple.
Enfin, les fans de SPIP trouveront à la fin de cet article SPIP 4 Drupal, un module Drupal qui vous permet d'adapter l'administration de Drupal (en termes de menus disponibles) pour ressembler plus à celle de votre CMS préféré.
Installation
L'installation des deux logiciels est relativement similaire. Je ne connaissais pas SPIP et j'ai (naïvement) tenté d'accéder à la page d'accueil du CMS, et j'ai obtenu un message d'erreur :
Il suffisait en fait d'accéder à la page "/ecrire", page d'administration. Je préfère l'approche de Drupal qui redirige vers l'interface d'installation sur un site non installé. Cela dit, soyons honnête, ça n'est opérationnel que depuis la 8.3 ;-)
Une étape intéressante durant l'installation de SPIP est la possibilité de se raccorder directement à un annuaire LDAP :
Ce n'est pas à proprement parler un manque dans Drupal (ou Wordpress, par exemple), la proportion de sites connectés à un LDAP n'étant pas si grande que ça, mais pour un CMS qui s'oriente vers les sites "ambitieux", c'est un ajout que je trouve intéressant.
Dans Drupal, cette fonctionnalité est couverte par l'ajout d'un module issu de la communauté, le module LDAP. Attention, il est composé de nombreux sous-modules pour couvrir un éventail de possibilités. Pour réaliser uniquement une authentification, il vous faudra activer ce module (et ses dépendances) :
Premier écran
La page de bienvenue (page affichée immédiatement après l'installation du site) est clairement une force de SPIP par rapport à Drupal (ou plutôt une faiblesse de Drupal, puisque SPIP se comporte ici comme de nombreux CMS) : SPIP propose en effet un tableau de bord et une indication sur les premières modifications ou contributions à effectuer sur le site : changer le nom / slogan / logo du site, mais également publier son premier contenu :
En cliquant sur la croix, un menu se met en surbrillance, et un clic sur le bouton dans le coin en bas à droite fait disparaître le bloc. Une fois des contenus créés, cet écran d'accueil affiche plutôt les derniers contenus et les rubriques du site. Cela permet aux nouveaux utilisateurs de se familiariser progressivement avec le CMS.
La fonctionnalité qui se rapproche le plus de cette aide en Drupal est la notion de didacticiel, fournit par le module Tour intégré au back-office de Drupal 8. Malheureusement, cette fonctionnalité n'est disponible que pour quelques modules, comme l'interface de Views et la traduction de Drupal, et n'est pas affichée sur la page de bienvenue :
Si vous souhaitez d'ailleurs créer des didacticiels sur votre site, vous pouvez ajouter le module Tour UI issu de la communauté qui vous donne accès à la configuration des didacticiels, sinon, c'est juste une API pour les développeurs.
Il est également possible d'ajouter des blocs dans Drupal pour alimenter un tableau de bord, que nous pourrions créer par exemple sur la page "/ecrire", c'est ce que nous ferons dans notre module SPIP 4 Drupal.
Gestion des utilisateurs
Ici, il y a peu de différences avec Drupal au niveau de l'administration des utilisateurs, si ce n'est que Drupal ne contient aucun rôle par défaut. SPIP est orienté "rédaction de contenu", et contient par défaut un rôle "rédacteur". À noter que dans Drupal, il est possible (et même courant) d'affecter plusieurs rôles à un même compte utilisateur, contrairement à SPIP. Ce sont ces rôles qui contrôlent l'ensemble des permissions des utilisateurs. Pour assurer cette fonctionnalité de SPIP, il suffit de créer un nouveau rôle (People / Rôles / Ajouter un rôle) et de lui affecter des permissions (People / Permissions).
La création d'un utilisateur SPIP permet également de lui affecter une partie du site dont il est responsable. Cette notion n'existe pas de base en Drupal, mais l'ajout du module Workbench Access permet de simuler cette fonctionnalité : on peut alors indiquer des "éditeurs" d'une partie du site, qui n'ont le droit de modifier l'arborescence ou les contenus de cette partie uniquement :
En plus, SPIP est orienté "blog multi-utilisateurs", et chaque rédacteur dispose d'une biographie et d'une photo. dans Drupal, seule une image est ajoutée par défaut mais il est possible d'ajouter des champs aux comptes utilisateur (Configuration / Paramètres de compte / Gérer les champs).
Chaque utilisateur dispose aussi nativement d'un formulaire de contact, ce qui est également le cas avec une installation standard de Drupal (Configuration / Paramètres de compte) :
Enfin, SPIP met en place une messagerie privée entre les utilisateurs. Là encore, il est possible d'implémenter cela dans Drupal, en ajoutant le module Private Message en Drupal 8, qui ne semble à l'heure actuelle pas complètement fonctionnel, ou Privatemsg en Drupal 7, qui fonctionne parfaitement.
Gestion du contenu
Ici, on retrouve à nouveau le fait que SPIP est nativement orienté pour la contribution éditoriale, et de nombreuses fonctionnalités sont disponibles dès l'installation là où Drupal va les chercher dans les modules communautaires.
Chaque page, quelle qu'elle soit, contient une image. Dans un Drupal installé avec le profil d'installation "standard", comme c'est souvent le cas pour ceux qui testent le CMS, c'est le cas du type de contenu "Article", mais ce n'est pas le cas du type de contenu "Page". Il faudra éventuellement lui ajouter un champ "Image" (mais c'est faisable directement dans l'interface (Structure / Types de contenu / Page / Gérer les champs).
Les contenus sont associés à un workflow de publication par défaut. Pour obtenir le même résultat avec Drupal, il vous suffira d'activer le module Content Moderation, et de le configurer (Configuration / Workflows / Workflow) :
SPIP inclut une médiathèque de base. Cela dit, il semble que les images ajoutées en "logo" des articles ne soient pas directement liées à cette médiathèque, contrairement aux images ajoutées en "portfolio" (mais un grand chantier de refonte des médias est prévu pour la version 3.3 de SPIP, et ce problème sera traité). Drupal fonctionnant uniquement avec des "champs" image, toute image est donc forcément centralisée dans la médiathèque, ce qui semble un peu plus intuitif (cela dit, selon votre configuration, vous ne pouvez pas forcément récupérer facilement une image depuis cette médiathèque).
La publication des contenus peut également être planifiée, ce qui correspond exactement au module Drupal Scheduler, issu de la communauté.
L'installation de SPIP permet d'utiliser directement quelques champs classiques (chapô…) qui n'existent pas dans Drupal, mais il suffit de les créer dans l'interface classique de gestion des champs (Structure / Types de contenu / Gérer les champs) :
Mise en page
Quelques éléments de mise en page sont déjà présents : notamment, les rubriques affichent la liste de leurs articles sous leur contenu. On constate également que les pages filles ou sœurs sont affichées dans une colonne à droite du contenu principal de la page.
Toutes ces fonctionnalités sont réalisables nativement en Drupal, mais ne sont pas directement disponibles. Vous devrez utiliser une combinaison de Views (module de listing qui permettra de réaliser les rubriques) et de Blocs (pour afficher les sous-menus des rubriques ou les pages sœurs).
Pour faciliter la création de ces rubriques, on peut utiliser le module Views Menu Node Children, qui liste les contenus d'une entrée de menu.
À noter : dans ces listes, les articles sont triés par défaut par date de publication décroissante, et seule la modification du plan du site permet de changer cela.
Autres fonctionnalités
Statistiques
Un système basique de statistiques de consultation est disponible dès l'installation de SPIP. Ce système n'existe pas vraiment en Drupal : le plugin de SPIP offre notamment la possibilité de consulter les statistiques sous forme de graphiques, ce que ne fournit pas du tout le trop basique module "Statistics" du cœur de Drupal.
La plupart des sites Drupal installent en effet les modules communautaires "Google Analytics" ou "Piwik" (afin de déporter ces statistiques sur un outil externe).
Pour imiter SPIP et permettre la consultation de statistiques directement sur le site, la solution la plus prometteuse semble être l'installation du module Simple analytics (uniquement pour Drupal 8) :
Installation de plugins depuis l'interface
Même s'il est possible d'installer un module depuis l'interface de Drupal, aucun "navigateur de plugin" n'est prévu pour faire son choix depuis son site : il faut passer par drupal.org. C'est une demande récurrente dans Drupal, depuis de nombreuses années, il y a un travail en cours, mais bien malin qui peut dire quand ou si ça finira dans le cœur de Drupal.
Moteur de recherche
Les deux CMS incluent nativement un moteur de recherche, dont les fonctionnalités semblent similaires.
À noter que dans Drupal, les sites les plus conséquents auront tendance à intégrer un moteur de recherche externe (notamment ApacheSolr ou Elasticsearch) et à l'intégrer par l'intermédiaire de la suite de modules Search API.
Collaboration entre les rédacteurs
SPIP comprend plusieurs outils permettant la collaboration entre les rédacteurs : un forum interne (implémentable avec le module Forum de Drupal (probablement couplé au module Forum Access pour limiter l'accès au forum aux seuls utilisateurs authentifiés)), un calendrier et une messagerie.
Plugins SPIP
Plugins du cœur
Nous allons aborder dans ce paragraphe les quelques plugins natifs en SPIP dont nous n'avons pas déjà parlé.
- Brèves : Ici, pour simuler la fonctionnalité de brève, il y a plusieurs étapes : d'abord créer un nouveau type de contenu "brève" (Structure / Types de contenu / Ajouter un type de contenu), puis générer un bloc listant les dernières brèves, grâce au module Views ;
- Compresseur : c'est natif et configuré par défaut sur Drupal 8 (Configuration / Développement / Performance) :
- Dump : nous pensons que c'est de la responsabilité de l'hébergeur de réaliser cette fonctionnalité, cependant, le module existe dans la communauté Drupal : Backup and Migrate ;
- Images : quelques filtres sont disponibles dans le cœur de Drupal (Configuration / Media / Styles d'images) et il est possible d'en ajouter (beaucoup) d'autres en utilisant le module communautaire Image Effects (port Drupal 8 du module Drupal 7 ImageCache Actions) ;
- jQuery UI : inclus nativement dans Drupal ;
- MediaBox : ce type de fonctionnalité est couvert par nombre de modules communautaires, citons Colorbox pour le plus utilisé actuellement ;
- Medias : la gestion des médias en Drupal 8 est aujourd'hui couverte par toute une suite de module, voir la documentation sur drupalmedia.org, à minima Media Entity (qui est plus ou moins dans le cœur de Drupal à partir de la 8.4.x), Entity Browser (pour la médiathèque) et Entity Embed (pour l'insertion dans l'éditeur de texte riche) ;
- Mots : le module Taxonomy du cœur de Drupal couvre la fonctionnalité (il est possible dans SPIP d'utiliser des plugins comme Polyhiérarchie pour gérer d'autres regroupements de contenus) ;
- Organiseur : cette fonctionnalité n'existe pas vraiment dans le monde Drupal, même si des modules (comme la distribution Open Atrium) ont pu éventuellement reproduire ce type de gestion de tâches ;
- Pétitions : Il n'y a pas d'équivalent Drupal, on pourrait probablement arriver à quelque chose d'approchant avec le module Entity Registration pour Drupal 7 ou RNG pour Drupal 8 ;
- Plan du site dans l’espace privé : cette fonctionnalité existe de façon beaucoup plus complète en Drupal 8, c'est ce qu'on appelle le Menu (Structure / Menus) et cela permet de gérer plusieurs menus : le menu principal, bien sûr, mais également le menu de pied de page et d'autres, chaque menu fournissant un bloc que l'on peut placer où l'on souhaite dans la charte graphique du site :
En fait, le module "Menu" de Drupal couvre à la fois la fonctionnalité de "plan du site" de SPIP et le plugin "Menus". La confusion peut venir du fait qu'en Drupal, c'est le même terme qui est utilisé indifféremment pour l'une ou l'autre fonctionnalité, tandis que SPIP distingue les deux : le "menu" est l'affichage dans la charte graphique, tandis que le "plan du site" est la fonctionnalité de classement des contenus dans des rubriques.
- Porte plume : depuis Drupal 8, un éditeur de texte riche est présent dans le cœur de Drupal, et la communauté a choisi d'utiliser CKEditor ;
- Révisions : la gestion de révisions est native dans le cœur de Drupal, on veillera cependant à ajouter le module Diff pour fournir une expérience d'utilisation optimale ;
- SafeHTML : l'utilisation de Twig par Drupal 8 permet de couvrir nativement cette fonctionnalité ;
- Sites : la syndication est native en Drupal, la récupération de RSS aussi (via le module du cœur Aggregator) ;
- Squelettes par Rubrique : c'est également natif en Drupal (cela s'appelle les Templates Suggestions) ;
- TextWheel : cette fonctionnalité de réécriture de texte semble correspondre à la fonctionnalité de "filtre" de Drupal (Configuration / Rédaction de contenu / Format de texte et éditeurs) ;
- Urls Etendues : il est possible en Drupal de réécrire les URLs de chaque contenu, mais pour ajouter une administration centralisée, on utilise régulièrement le module communautaire "Pathauto" ;
- Vertèbres : ce mini "phpMyAdmin" (ou sa version récente Adminer) est assez intéressant mais ne semble pas apporter une énorme valeur ajoutée pour un développeur qui peut accéder directement à la base de données. Il n'y a pas spécialement d'équivalent Drupal.
Plugins les plus utilisés par la communauté
Les principaux CMS augmentent aujourd'hui leurs capacités natives par l'ajout de modules ou plugins issus de leurs communautés respectives, et SPIP ne fait pas exception à la règle. Paradoxalement, certains de ces plugins externes sont inclus dans le cœur de Drupal, indiquant ainsi que Drupal devient un choix intéressant dès que la complexité du site augmente, alors que SPIP sera plus rapidement mis en place et complètement opérationnel sur les sites plus simples.
J'ai regardé les principaux plugins utilisés sous SPIP (d'après le site SPIP Plugins), pour essayer de leur trouver un équivalent dans la communauté Drupal :
- Facteur : ah, le classique problème de l'envoi de mail… là encore, de nombreux modules existent dans la communauté pour enrichir l'envoi de mail natif de Drupal. On peut naturellement intégrer la bibliothèque PHPMailer comme SPIP, via le module éponyme, le module SMTP, et on utilise de plus en plus fréquemment le module Swiftmailer pour l'envoi de mails HTML ou avec des pièces jointes ;
- Accès restreint : de nombreux modules peuvent être utilisé pour couvrir ce besoin, on peut citer Content Access, ou Group ;
- Crayons : permettant une édition rapide de contenu, ce module semble correspondre au module Drupal "Quick Edit", inclus dans le cœur D8 :
- Saisie pour formulaires : ce plugin correspond en partie au module de la communauté Drupal Webform qui inclut notamment une déclaration des formulaires en YAML, ce qui permet de les implémenter très rapidement ;
- Bonux & Couteaux suisses : ce regroupement de fonctionnalités nécessiterait probablement l'intégration de plusieurs modules Drupal ;
- Menus : c'est natif en Drupal (et un vrai manque de SPIP à mon avis) ;
- Nospam : ce plugin est en partie nativement géré par Drupal (qui inclue une notion de flood, limitant les saisies massives de formulaires), et nous utilisons quasiment systématiquement en plus le module communautaire Honeypot, qui ajoute un champ masqué dans les formulaires. Les robots remplissants ce champ sont alors bloqués à la soumission, et cette solution est transparente pour les visiteurs humains (un gros plus par rapport aux captchas classiques) ;
- Social tags : de nombreux modules de la communauté Drupal permettent le partage de contenus, essentiellement par l'intégration d'une bibliothèque tierce : on peut citer AddToAny, ShareEverywhere, …
- Corbeille : il n'y pas de notion de poubelle de base en Drupal (sinon via le module Trash), on privilégie plutôt la dépublication, ou un statut de workflow dédié, mais rien ne s'efface véritablement .
- Formidable : c'est là encore le module Webform qui correspond au plugin ;
- Newsletters (composition) + Mailsubscribers (gestion de listes) + Mailshot (gestion d’envois en masse) : le module de newsletter le plus représentatif est probablement Simplenews, même si il est de plus en plus courant d'intégrer plutôt un outil externe comme Mailchimp ou Mailjet, pour lesquels il existe des modules Drupal ;
- Formulaire de contact avancé : cela aussi est natif dans Drupal 8 grâce au module du cœur Contact ;
- Champs extra : une fonctionnalité présente dans Drupal depuis environ 10 ans, bien qu'elle ne soit dans le cœur que depuis 2011 et la sortie de Drupal 7 ;
- Article PDF / PDF version : un équivalent existe dans la communauté Drupal, le module Entity PDF ;
- Autorité : le modèle de permissions de Drupal, parfois vu comme complexe, et très fin et permet de facilement réaliser l'équivalent de ce plugin directement dans le cœur ;
- Skeleditor : il n'y a pas d'équivalent dans le communauté Drupal, et c'est tant mieux ! On ne devrait jamais modifier du code directement dans l'interface du site : le code doit résider dans un gestionnaire de configuration comme git, pour pouvoir le déployer sur la production en s'assurant de l'intégrité des fichiers. On constate à nouveau le positionnement du CMS ;
- Jardin Zen : natif dans Drupal (via le menu Apparence).
Quelques modules pour vous aider à migrer à Drupal ?
Les 3 modules cités dans cette partie ne sont malheureusement pas disponibles pour Drupal 8 à l'heure actuelle…
Il existait en effet un modules permettant de migrer directement de SPIP à Drupal quasiment automatiquement, mais SPIP2Drupal n'existe hélas que pour Drupal 6, il faudrait en faire une version pour Drupal 8, car le code n'est pas compatible avec cette version du CMS. Cependant, le code peut tout à fait servir d'inspiration, notamment parce que le modèle de base de données de SPIP est lui complètement compatible avec les anciennes versions, et il faut donc uniquement adapter la partie Drupal.
On trouve également dans SPIP la possibilité d'administrer le "forum" (les commentaires au sens Drupal) d'un contenu pour l'auteur du contenu. Cette fonctionnalité n'existe pas dans Drupal, mais il semble que le module Comment Access en Drupal 7 faisait exactement ça. Là encore, ce serait à adapter pour Drupal 8.
Enfin, toujours en Drupal 7, on trouve le module Multilinguisme Made Simple qui reprend semble-t-il une des possibilités de multilinguisme de SPIP. À noter que sur le sujet du multilinguisme, ce module ne fonctionnera plus dans Drupal 8 qui met en place une interface plus "complexe", mais adaptée à n'importe quelle configuration multilingue souhaitée.
SPIP 4 Drupal
Si vous téléchargez notre module SPIP 4 Drupal, vous aurez après installation accès à : un rôle "rédacteur", un système de brèves, un menu d'administration reprenant les principaux liens de SPIP.
Nous l'enrichirons en fonction des remarques des utilisateurs, et vous êtes naturellement invités à proposer des contributions !
Pour aller plus loin
Nous avons présenté ici les principales fonctionnalités de Drupal permettant de reproduire rapidement SPIP en Drupal, mais si vous souhaitez en savoir plus ou aller plus loin, n'hésitez pas à nous solliciter pour une suivre une formation Drupal ou tout autre projet de migration de votre site.
Formations associées
Formations Drupal
Formation Drupal Développeur
À distance (FOAD) Du 2 au 4 avril 2025
Voir la formationActualités en lien
Migration d'un site Drupal 7 en Drupal 11
Trucs, astuces et "bouts" de code pour migrer votre site web de Drupal 7 à Drupal 11. Compte-rendu d'une conférence donnée au Drupalcamp Rennes 2024.
Makina Corpus, partenaire du DrupalCamp 2024
Nous sommes fiers d’annoncer que Makina Corpus est le sponsor du DrupalCamp à Rennes. Notre expert vous y propose une conférence « migrer de Drupal 7 à Drupal 10 ».