Après avoir fait quelques projets en SPIP en 2007 et 2008, je n’avais pas eu l’occasion d’utiliser de nouveau ce CMS depuis son passage en version 2.
Entre temps, il est vrai que j’ai beaucoup travaillé sur différents CMS que ce soit dans le cadre professionnel ou personnel. On peut citer eZ Publish, Drupal, Joomla, WordPress, Dotclear. J’ai donc acquérit une vision d’ensemble des différentes solutions du marché. Il faut bien avouer que SPIP se place parmis les meilleures produits.
Principales fonctionnalités
Une structure arborescente
SPIP permet d’organiser sont contenus dans une hiérarchie de rubriques, il n’y a pas de limitation sur le hauteur de l’arbre de rubrique.
Les articles
L’objet principal permettant de publier des informations sous SPIP est l’article. On peut placer autant d’articles que nécessaire, dans n’importe quelle rubrique.
Un article est constitué de plusieurs éléments qui permettent de le structurer : titre, surtitre, soustitre, descriptif, chapeau, texte principal, post-scriptum. Les règles de base de la typographie française sont appliquées automatiquement (espaces insécables avant les points d’interrogation, d’exclamation, …).
L’édition des articles se fait via des raccourcis typographiques à la manière d’un Wiki.
En plus des articles, on trouve les brèves qui sont de « articles simplifiés ».
Les forums
Les forums sous SPIP correspondent à plusieurs types de fonctionnalités que l’on trouve habituellement sur le Web :
- les forums publiques (comme le nom l’indique)
- un système de commentaires plutôt avancées et configurable à souhait
- un outil pour communiquer entre les différents rédacteurs du sites Web
Le dernier point est particulièrement intéressants car SPIP permet non seulement de s’occuper de l’interface visible d’un site, mais il fournit également toutes les fonctionnalités nécessaire à la gestion éditoriales (forum privé, agenda privé, gestion des droits, workflow, …).
Syndication de contenu
SPIP est fournit en standard avec un système de syndication de contenu plutot avancé, SPIP peut analyser de les flux RSS et ainsi indiquer les nouveautés d’autres sites. On peut ajouter autant de sites syndiqués que l’on veut. Les sites syndiqués sont associés aux rubriques de son propre site ; ainsi, on peut associer à une rubrique thématique les liens vers des sites traitant du thème précis de la rubrique.
Quelques caractéristiques techniques de SPIP
Le langage de template
Pourtant, loin d’être fan des langages de templates, il faut bien avoué que celui de SPIP apportent un certain confort dans la mise en place d’algorithme simple. Le système de boucle permet de notamment de gérer facilement les alternatives lorsqu’aucun élément n’est présent.
<bn>
<!-- Code HTML optionnel avant -->
<bouclen(TYPE){critère1}{critère2}...{critèrex}>
<!-- Code HTML + balises SPIP -->
</bouclen>
<!-- Code HTML optionnel après -->
</bn>
<!-- Code HTML alternatif -->
<//Bn>La présence d’un grand nombre de critère prédéfinis facilitent les tris et permet d’avoir un code dont la lecture est très proche du langage naturel.
Sa nature radicalement différente de PHP apporte un réel plus. Malheuresement, dès que l’on veut faire des choses complexes le langage de template est d’une lourdeur incroyable. Il suffit de regarder le modèle par défaut pour la pagination pour s’en rendre compte.
#ENV*{bloc_ancre}
#SET{bornes,#ENV{page_courante}|bornes_pagination{#ENV{nombre_pages},10}}
#SET{premiere, #GET{bornes}|reset}
#SET{derniere, #GET{bornes}|end}
#SET{separateur,#ENV{separateur,'|'}}
[<a href='[(#ENV{url}|parametre_url{#ENV{debut},''})]##ENV{ancre}' class='lien_pagination' rel='nofollow'>(#GET{premiere}|>{1}|?{'...',''})</a> #GET*{separateur}]
#SET{i,#GET{premiere}}
[(#GET{i}|<={#GET{derniere}}|?{' ',''})[
(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} })
][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{item}}{separateur=#GET*{separateur}}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#GET{derniere}})]
]
...Heureusement, SPIP met à disposition d’autres outils utilisable dans les templates permettent de contourner ce problème.
Les modèles
Les modèles sont généralement de petits templates qui sont utilisables à la fois dans l’éditeur de texte ou directement dans les templates. Ce mécanisme est extrêmement simple à mettre en place. Il suffit de mettre un fichier de template dans le répertoire modeles de dossier qui contient votre squelette et le tour est joué.
Les formulaires
Basé sur une architecture CVT (Charger Vérifier Traiter), les formulaires sont faciles à mettre en place. Ils sont bien architecture en 4 composants distincts :
- une vue qui se trouve dans le répertoire formulaires, c’est un simple squelettes SPIP
- une fonction de chargement qui va s’occuper de fournir la liste des champs saisis dans le formulaire, avec des valeurs par défaut éventuelles.
- une fonction de vérification qui va vérifier la validité de la saisie. La fonction renvoie une liste de messages d’erreur correspondants à chaque champs erroné, ou une liste vide en cas d’absence d’erreur.
- une fonction de traitementqui va s’éxécuter si la fonction de vérification n’a pas renvoyé d’erreur. On y trouve toutes les opérations de traitement du formulaire : envoi d’un mail, enregistrement en base de donnée…
L’accessibilité et les standards Web
Voila certainement l’un des points fort de SPIP, c’est son respect des standards Web, et notamment le fait qu’il possible de répondre favorablement à toutes les exigences des critères d’accessibilités.
En effet, il est parfaitement possible de mettre du code HTML ou des raccourcis typographiques dans n’importe quels champs de saisies. On peut par exemple marquer les changements de langue dans les titres sans affectés les URLs générés.
La seule contrainte pour le rédacteur est de connaitre le HTML et l’utiliser à bonne escient. Mais bon HTML n’est il pas la langue du Web ?
Les plugins
Comme tous CMS qui se respectent, SPIP fournit un mécanisme de plugins. Comme chez la concurrence, leurs qualités est extrêmement variables
Limitation
La principale limitation qu’offre SPIP est sa documentation bien que très volumineuses, seules les fonctionnalités basique sont très détaillés. Quand, il s’agit de faire un plugin, des formulaires, ou autres fonctionnalités cachés, la documentation se limite souvent à un listing des fonctions disponibles, ou à un exemple basique qui n’apportent finalement pas grand chose. Bref, souvent seul le code source nous donnent l’information souhaité. Le problème est d’autant plus grand que SPIP bien que parfaitement architecturé s’écarte des standards habituelles que l’on trouve sur les autres produits.
SPIP est un gestionnaire d’article, le moins que l’on puisse dire c’est qu’il le fait bien. Par contre, dès que l’on veut faire des fonctionnalités qui sortent du cadre les problèmes commencent.
bonjour,
Dans les points positifs, j’ajouterais que la communauté SPIP est très active, de nombreux points d’entrés forum, listes de discussion, irc existent: le temps de réponse est carrément impressionnant.
‘De la limitation’ comme vous dites:
La galaxie SPIP distingue ceux qui développent sous SPIP et ceux qui développent SPIP.
Par ex. il existe une liste de discution spip, pour ceux qui développent avec SPIP, et la liste SPIP-dev pour ceux qui participent au développent de spip lui même. Sur le même principe on trouve
spip-contrib.net, spip.net pour les premiers et par ex. programmer.spip.org pour les autres.
De la conclusion:
En effet bien que sans rappel du contexte, redécouverte de SPIP en V2, il est réducteur de dire ‘gestionnaire d’articles’, omettre les fonctions: d’interactivité avec les visiteurs, le support natif des bases de données externes, la vitesse de développement, les possibilités de travail collaboratif, la facilité de mise en place de multilinguisme et j’en passe.
Un dernier regret, qui est limite hors sujet, (puisque le terme de template est laché) c’est comme d’autres cms, la myriade de templates sous licence libre proposés aux non informaticiens.
Enfin, je trouve sinon honnête de reconnaitre SPIP de la cour des grand, valeureux d’avoir défendu ce logiciel libre, qui de plus ce veut tendre.
Cher collègue, au plaisir.
anic_fr
Merci pour cet article et tes intéressants retours critique, en phase avec ce qu’est réellement SPIP aujourd’hui. Je pense aussi qu’il manque de la documentation et que la simplicité apparente ne laisse pas présumer des possibilités.
très bon article, très intéressant, merci
Salut, quand tu dis :
« La principale limitation qu’offre SPIP est sa documentation bien que très volumineuses, seules les fonctionnalités basique sont très détaillés. »
Je ne peux m’empêcher de te signaler l’existence de :
http://programmer.spip.org/
« Cette documentation s’adresse à un public de webmestres ayant des connaissances en PHP, SQL, HTML, CSS et JavaScript. »
Et l’indispensable glossaire de spip.net :
http://www.spip.net/@
++
Bonjour,
Merci pour ton billet. Je suis tout à fait d’accord sur l’analyse.
Pour les plugins, le site plugins.spip.net ne semble plus trop mis à jour. le lien le plus utile est spip-contrib :
http://www.spip-contrib.net
Et ici, quand on connait les plugins, la page de téléchargement des plugins de la zone :
http://files.spip.org/spip-zone/
merci sylvain pour cet article.
Je suis heureux que nous ayions fait les bons choix lors de la refonte de notre site web
A+
Ça m’avait échapé à la première lecture : pourquoi dis-tu que « la seule contrainte pour le rédacteur est de connaitre le HTML et l’utiliser à bonne escient » ?
Depuis l’origine SPIP permet aux rédacteurs de publier sur le Web sans connaître le HTML, grâce à des raccourcis typo (insérés trop simplement : en cliquant les boutons de la barre typo) qui génèrent eux-mêmes le code HTML valide qui convient (contrairement à la plupart des éditeurs wysiwyg).