Contactez-nous

1

Utiliser SPIP comme un framework

5 février 2009
par ARNO*

Je souhaite présenter, dans le présent billet, des utilisations de SPIP éloignées de ce pour quoi SPIP a été conçu : des techniques qui utilisent le système de squelettes de SPIP pour produire autre chose que du contenu éditorial en XHTML.

Il s’agit évidemment de développements avancés qui n’ont rien à voir avec une utilisation « clé en main » de SPIP. Il me semble intéressant de mettre en avant cet aspect de SPIP pour les raisons suivantes :
— montrer que c’est parfaitement réalisable avec SPIP ; beaucoup de commentaires sur le Web présentent le langage de squelettes comme un moyen de réaliser des maquettes relativement facilement, mais précisent immédiatement que pour une utilisation plus poussée (ou « professionnelle »), SPIP est inadapté ; je prétends au contraire que le système de squelettes, depuis ses origines, permet de gagner des heures de développement, y compris pour les usages avancés ;
— depuis SPIP 1.8, et officiellement avec SPIP 2.0, une grande orientation des développements de SPIP concerne l’utilisation de SPIP comme « framework » (en français : « plateforme de développement », comme nous l’expliquons dans la présentation de la version 2.0) ; la plupart des commentaires ont tendance à ne voir cet aspect « framework » que par le prisme des plugins, alors qu’il est déjà central dans les évolutions du langage de squelettes ;
— donner des idées aux bidouilleurs qui voudraient avancer dans cette direction.

Il ne s’agit pas ici d’un mode d’emploi, mais simplement de détailler quelques exemples d’utilisations de SPIP dans différentes situations.

On verra qu’on peut fabriquer, directement à partir des squelettes :
- des « noisettes » XHTML chargées dynamiquement en AJAX,
- des fichiers de commandes Javascript,
- des fichiers XML (pour interfaçage, par exemple, avec des animations Flash, ou pour importer/exporter avec d’autres systèmes informatiques),
- des fichiers CSV (même si ce format est plutôt dépassé),
- des fichiers Excel,
- des fichiers PHP directement exécutables,
- des animations Flash avec l’extension Ming de PHP,
- des feuilles de style CSS,
- des fichiers d’agendas compatibles iCal...

Plan-ciné.fr

Le site plan-ciné.fr est ma création la plus caractéristique de l’utilisation de SPIP en tant que framework : le site n’utilise carrément pas l’espace privé de SPIP (à part pour suivre les statistiques), il ne contient ni rubriques, ni articles, ni brèves.

Il s’agit d’un site doté d’une seule et unique page, constituée d’un mashup de présentation les séances de cinéma sur une Google Map. Différentes squelettes permettent d’afficher à la demande, en Ajax, des blocs d’information. Et un squelette en particulier fabrique directement un fichier entièrement en Javascript permettant d’afficher les séances d’un film.

Tout cela est réalisé avec des squelettes SPIP. Il y a quelques fonctions spécifiques en PHP dans mes_fonctions.php pour faciliter le codage, mais ces fonctions sont très simples et les squelettes eux-mêmes ne recourent à aucune « bidouille » en PHP.

Le principe est d’afficher les informations stockées dans des tables supplémentaires : spip_films stocke les films (titre, réalisateur, acteurs, affiche), spip_cinemas stocke la liste des cinémas (nom, adresse, latitude et longitude, logo du cinéma) et une table spip_seances stocke toutes les séances (identifiant du film, identifiant du cinéma, version VO ou VF, horaire).

Voici le squelette qui fabrique la liste des séances pour un film dans une certaine tranche horaire :

  1. #HTTP_HEADER{'Content-Type: text/Javascript'}
  2.  
  3. <BOUCLE_cinemas(spip_cinemas)>
  4. <BOUCLE_test_cinema(spip_seances){id_cinema}{0,1}{horaire>=#ENV{film_debut}}>
  5. cinemas["#ID_CINEMA"] = new cinema (#ID_CINEMA, "#NOM", #LATITUDE, #LONGITUDE,
  6. [(#LOGO|?{" ",""})[iconeCinema(#LOGO|md5|substr{0,5})]][(#LOGO|?{""," "})0], [(#LOGO|?{" ",""})[iconeCinema(#LOGO|md5|substr{0,5})off]][(#LOGO|?{""," "})0],
  7. "|<BOUCLE_films_cinema(spip_seances){id_cinema}{fusion id_film}{vovf==(#ENV{afficher_vovf}|sinon{.})}{horaire>=#ENV{film_debut}}{horaire<#ENV{film_fin}}>#ID_FILM|</BOUCLE_films_cinema><BOUCLE_films_cinema_alt(spip_seances){id_cinema}{fusion id_film}{vovf==(#ENV{afficher_vovf}|sinon{.})}{horaire>=#ENV{film_debut}}>#ID_FILM|</BOUCLE_films_cinema_alt><//B_films_cinemas>");
  8. </BOUCLE_test_cinema></BOUCLE_cinemas>
  9.  
  10. afficher_cinemas();

Télécharger

Certes, le code est assez impressionnant, mais il est important de noter qu’il s’agit uniquement de commandes du langage des squelettes. Ce squelette est appelé en AJAX (avec la commande $.getScript de jQuery), il reste en cache, et provoque directement l’affichage des séances sur la carte.

On remarquera en particulier qu’il utilise des boucles « normales », sans bidouilles bizarres ; simplement on interroge ici des tables de la base de données qui ne sont pas dans le SPIP d’origine.

Les autres squelettes permettant de gérer le site sont, eux, des noisettes en HTML plus classiques, mais qui sont appelées dynamiquement en AJAX.

Voici par exemple le squelette qui fabrique directement le bandeau de navigation du bas, où l’on peut sélectionner le film dont on souhaite afficher les séances. Le code est artificiellement complexifié par le fait que j’ai développé un javascript permettant de gérer un cliquer-déplacer pour déplacer le contenu de gauche à droite avec la souris (façon « iPhone »).

  1. #HTTP_HEADER{'Content-Type: text/html'}
  2. <B_films>
  3. <div id="slide_tout" onmousedown="debut_slide('#slide_tout'); return false;" style="position: absolute; left: 0px; width: [(#TOTAL_BOUCLE|multiplier_par{80})]px;">
  4. <BOUCLE_films(spip_films){genre==#ENV{genre}|urldecode|sinon{.*}}{seances>0}{par seances}{inverse}{0,20}>
  5.  
  6. <div class="pave-film">
  7.  
  8.  
  9. <div class="logo-film">[<a href="#" onclick="if(!slideur_actif) {map_tout_effacer();afficher_film = #ID_FILM; charger_vovf('.');} return false;"><span class="titre-film">[(#TITRE|decouper_titre)]</span>(#LOGO|sinon{squelettes/imgs/fausse-affiche.jpg}|image_reduire{80}|image_renforcement{0.1}|inserer_attribut{alt,#TITRE})]</a></div>
  10. <div class="logo-reflet">[(#LOGO|sinon{squelettes/imgs/fausse-affiche.jpg}|image_reduire{80}|image_graver|image_flip_horizontal|image_graver|image_masque{masques/reflet3.png}|image_graver|image_aplatir{jpg,ffffff}|inserer_attribut{alt,x})]</div>
  11.  
  12. <BOUCLE_test_vo(spip_seances){id_film}{fusion vovf}{vovf!==vf$}{horaire >= (#RIEN|debut_semaine)}{horaire <= (#RIEN|fin_semaine)}>
  13. </BOUCLE_test_vo>
  14. <div class="vovf">
  15. <BOUCLE_vovf(spip_seances){id_film}{fusion vovf}>
  16. <strong><a href="#" onclick="if(!slideur_actif) {map_tout_effacer();afficher_film = #ID_FILM; charger_vovf('[(#VOVF|replace{"^en ",""})]');} return false;">[(#VOVF|replace{"^en ",""}|image_vovf)]</a></strong>
  17. </BOUCLE_vovf>
  18. </div>
  19. </B_test_vo>
  20. </div>
  21. </BOUCLE_films>
  22. </div>
  23. </B_films>

Télécharger

Dans les deux cas, noter la présence d’un #HTTP_HEADER indiquant la nature du fichier généré (javascript ou HTML), nécessaire au bon fonctionnement d’AJAX.

Toute la complexité du code réside dans le Javascript gérant le mashup Google Map et les chargements asynchrones. Mais du côté des extractions des informations de la base de données, l’utilisation du langage de squelettes de SPIP permet de gagner des heures (des journées ?) de développement en conservant un code source particulièrement lisible.

Flip-Zone

Le magazine de mode Flip-Zone est un « site magazine » plus classique, puisqu’il s’agit bien d’articles publiés dans des rubriques.

Un des aspects spectaculaire est la construction très graphique du site, entièrement automatisée, avec de très nombreux calculs graphiques (via les filtres graphiques de SPIP) pour fabriquer les multiples « couvertures » et vignettes de navigation, et des changements de couleurs à chaque page du site (via les filtres présents dans SPIP).

Mais ce qui m’intéresse pour ce billet, c’est la création des « animations tourne-pages » en Flash qui présentent chaque collection.

Il y a eu plusieurs versions pour réaliser ce même « tourne-page ». Chaque version utilisait des techniques très différentes pour réaliser le même effet, chaque solution étant à mon avis intéressante pour le présent billet.

- La première version consistait à fabriquer directement une animation Flash dans mes_fonctions.php en utilisant la librairie Ming de PHP. J’étais assez fier de cette solution particulièrement compliquée, alors que Ming était plutôt utilisé pour faire des petites animations moches. Le problème était que chaque fichier Flash ainsi généré était lourd et différent d’une collection à l’autre, ce qui ralentissait les chargements. Et fabriquer l’ActionScript directement dans Ming rendait le code totalement impossible à faire évoluer.

- La seconde version reposait sur un fichier Flash « classique », bourré d’ActionScript, réalisé directement dans Flash, de taille beaucoup plus réduite (36 ko), auquel je passais des variables permettant à ce fichier de charger des fichiers XML. De cette façon, pour chaque collection, le fichier Flash à charger est toujours le même et très léger. La quantité de donnée (notamment graphique) est importante, mais le Flash initial se charge très rapidement, les différentes pages se chargeant ensuite de manière asynchrone.

Je passais l’identifiant de l’article en variable Flash, et le fichier Flash chargeait alors un squelette SPIP qui fabriquait le XML directement. Ainsi j’utilisais SPIP pour fabriquer du XML, très simplement.

Chaque page ainsi définie par un fichier XML chargeait alors un autre fichier Flash doté lui-même de variables spécifiques. Ca restait très lourd à maintenir, et les temps de chargement étaient encore pénalisants.

- La dernière version repose toujours sur un fichier Flash commun à toutes les collections auquel je passe des variables. En revanche, désormais, les fichiers XML contiennent l’intégralité de la description du contenu des pages, et ils sont générés directement au calcul de la page principale, en PHP, dans mes_fonctions.php. L’élégance de la fabrication des XML directement avec des squelettes est perdue, mais l’ensemble se charge désormais beaucoup plus vite, et le code est un peu plus simple à maintenir (même si ça reste un sacré mammouth).

Magnard.fr

Le site des éditions Magnard est, après le site des éditions Vuibert, le premier site où j’ai commencé à utiliser SPIP comme un « framework » : la base de données des livres et des collections n’utilise pas la structure SPIP (qui n’est évidemment pas conçue pour gérer des livres avec toutes leurs caractéristiques).

L’affichage des livres d’une collection est aussi simple que d’afficher les articles d’une rubrique :

  1. <BOUCLE_les_livres(LIVRE_VUIB){id_collection}{etat==^(publie|paraitre|proppar)$}{par ordre}{doublons livres}>
  2. #TITRE
  3. </BOUCLE_les_livres>

Télécharger

L’aspect « framework » apparaît plus particulièrement dans deux autres fonctions spécifiques du site, invisibles pour l’utilisateur.

- Le catalogue des livres est géré sur un autre serveur, sur un système-métier très spécifique (PIONIX de MetaConcept), il faut donc récupérer les mises à jour sur le site Web.

Chaque jour, le système externe installe sur le serveur une collection de fichiers XML (ainsi que des fichiers JPEG des couvertures et des documents supplémentaires) sur le serveur par FTP. Automatiquement, le site découpe ces fichiers XML, reformate l’information et l’insère dans la base de données MySQL locale. Le moteur pour parser le XML est, sur ce site, XML Parser de Critical Development (c’était avant l’introduction de fonctions dédiées dans SPIP).

Ce type de travail porte un nom extrêmement technique : c’est une « moulinette »...

- Par ailleurs, chaque jour, le site doit exporter les commandes d’ouvrages au format CSV à destination du système de gestion des commandes, qui est lui aussi sur un système externe. Là encore, SPIP est parfaitement capable de fabriquer des fichiers CSV directement par des squelettes.

- Tout cela avec des changements d’encodage des caractères (charsets), le site étant en utf-8, les systèmes externes étant en ISO-8859-1. Les fonctions natives de SPIP sont alors utilisées.

Autres sites

Des aspects « framework » plus restreints sont utilisés sur les sites suivants.

- Le site de la Réunion des musées nationaux dispose d’un plugin spécifique permettant de synchroniser automatiquement (via XML) le site de la « boutique de la RMN » dans certains espaces du site. Là, l’aspect « framework » passe par un plugin complet développé pour l’occasion.

- Le site de la Journée du 20 Mars de l’Organisation internationale de la Francophonie gère des « événements » renseignés par les visiteurs. Une originalité ici est que les différentes informations concernant ces événements sont ensuite exportés, via des squelettes, au format Excel, à destination des administrateurs. Il s’agit là de squelettes qui fabriquent directement du PHP, utilisant un script PHP qui permet de fabriquer des fichiers au format .xls. C’est donc du PHP fabriqué dynamiquement dans des squelettes SPIP, permettant l’export direct de fichiers Excel.

- Sur un site actuellement en développement (je ne peux donc vous fournir l’adresse), des documents XML associés à des articles en tant que « documents distants » contiennent la liste des membres d’une association professionnelle. Des boucles utilisant le plugin « Boucles XML » permettent de très facilement exploiter et afficher ces informations :

  1. <B_xml>
  2. [<script src="(#CHEMIN{thickbox.js})" type="text/javascript"></script>]
  3. <BOUCLE_xml(DOCUMENTS){id_article}{extension=xml}{titre==membres}>
  4. [(#INCLURE{fond=xml_membres}{xml=[(#FICHIER|copie_locale{force})]})]
  5. </BOUCLE_xml>

Télécharger

Contrairement à la « moulinette » du site Magnard, ici le fichier XML est utilisé tel quel directement depuis le squelette, il n’y a pas de conversion préalable vers la base de données MySQL. On a un résultat plus limité, mais suffisant pour l’usage de ce site, et avec un développement ultra-rapide.

Conclusion

Le système de squelettes de SPIP permet, depuis l’origine, de fabriquer d’autres formats que le XHTML destiné à présenter l’information sur le Web. En particulier, on trouvera des fichiers exportant du XML assez classique de flux RSS.

Un tel squelette est : squelettes-dist/backend.html.

On trouvera également le fichier prive/ical_prive.html qui fabrique un export au format .ics pour des calendriers au format iCal (c’est une version spécifique du XML).

Et évidemment, il est très facile de réaliser des fichiers de styles CSS avec des boucles, par exemple prive/style_prive.html.

J’espère que les différentes utilisations de SPIP présentées ici vous donneront quelques pistes sur ce que peut signifier « utiliser SPIP comme un framework », et fabriquer très rapidement des types de fichiers qui ne sont pas simplement destinés à afficher de « simples » pages éditoriales en XHTML.

Je souhaitais également insister sur le fait qu’il n’est pas indispensable de se lancer immédiatement dans le développement gros plugins pour progresser et étendre les fonctionnalités d’un site.

Certaines utilisations sont particulièrement complexes, mais je pense qu’un peu de patience et de jugeotte permet de progresser dans ce domaine. Il est surtout intéressant, ici, de conjuguer ce que l’on sait déjà faire avec la flexibilité du langage des squelettes (un bon développeur Flash gagnera des heures, grâce à des squelettes en XML, pour interfacer l’information tirée de SPIP avec ses animations ; exporter l’information en XML vers un système tiers ne demande pas des compétences énormes, créer des CSS dynamiques est un vrai plaisir...).

  • Le Monolecte
    Février 2009

    C’est zarbi : je posais justement la question à Fil, il y a 2 petites heures, sur les possibilités d’utiliser SPIP comme FrameWork et voilà que tu dépotes ce texte.

    À l’origine, un développeur web qui me dit que SPIP, c’est de la bidouille et ce n’est pas pro, alors que Zend sous eclipse pdt, c’est de la balle. Sauf qu’eclipse, j’ai vraiment du mal avec son interface et que j’aime bien spip, si ce n’est qu’il faudrait trouver un moyen d’intégrer les balises SPIP dans un IDE (eclipse pour les dev ou quanta, pour les... moi !)

  • Cedric
    Février 2009

    J’en causais encore l’autre jour sur le blog http://www.spip-blog.net/De-l-inter...

  • Le Monolecte
    Février 2009

    Salut Cédric : c’est amusant, car, comme je me posais des questions sur Spip comme framework, google m’a envoyé chez toi !

    En fait, arrive le niveau suivant de la réflexion : puisque Spip est un super framework (la question est résolue par ARNO et toi... quelques autres), il nous faut un outil d’aide à la conception. Je ne sais pas trop comment manipuler Eclipse pour lui faire entrer de nouvelles balises, mais j’ai commencé à bidouiller sous Quanta+ une nouvelle barre d’outil qui fournit les balises Spip. Le problème, c’est qu’il faudrait quelque chose de plus adapté pour pouvoir rentrer les arguments, critères, filtres et balises, exactement de la même manière que pour des balises html ou php.

    Avec les boucles et balises spip préécrites dans les principaux IDE libres + l’autocomplétion qui va avec, on avancerait à pas de géant.

  • Sylvain
    Février 2009

    Voilà enfin un article, à la fois simple et relativement abordable, pour tordre le coup à ceux qui jugent si mal SPIP (sans connaitre, bien sur). Un rien d’humour du genre

    Ce type de travail porte un nom extrêmement technique : c’est une « moulinette »...

    pimente parfaitement le sujet :-)

    Bien sur, il est d’autant plus pertinent et percutant aujourd’hui, puisque la version 2, rend pleinement officiel ces aspects de framework. Car, il faut bien ce le dire, cela restait un peu confidentiel jusque là (à moins de plonger tout entier dans la communauté SPIP j’entends).


    Dans le même genre, il manque un article expliquant que « SPIP peut faire du site accessible » ... j’entends trop de critiques à ce sujet, alors que tout vient du squelette.

    Évidemment, pour nous qui utilisons SPIP tous les jours (enfin, pas tous quand même) c’est évident que « SPIP peut faire accessible » ... mais comme il peut faire des sites catastrophiques.

    La recette est simple :

    1. prendre un développeur web qui sait faire des sites accessibles
    2. injectez lui les #BALISES, <BOUCLE_s>, et autres {filtres}
    3. laisser mijotter, quand son œil commencera à pétiller, c’est qu’on approche :-)

    ... vous obtiendrez alors un site parfaitement accessible. Et même si vous le voulez, respectant parfaitement les recommandations du W3c ... n’est-ce pas Arno* qu’on peut1 quand même :-p

    Bref, si tu as du temps, ou pouvait souffler l’idée à Fil (ou l’un des autres mousquetaires, dont le nom m’échappe). Car il me semble qu’un tel article aurait bien plus de valeur écrit par l’un des auteurs historique et/ou actuel ... en plus vous savez très bien écrire :-)

    merci encore ...


    PS : si le plugin trackback existait je l’aurais utilisé ici tiens ;-)

  • klelugi
    Mars 2009

    Je crois que le principal problème, pour faire comprendre aux utilisateurs potentiels de SPIP l’interêt de son utilisation, est le fait que la documentation des fonctions évoluées dont SPIP regorge n’est pas encore suffisament documentée.

    Une fois pris en main ce n’est effectivement que du bonheur pour gagner un temps plus que certain dans ses développements.

    Merci pour ce nouvel article de qualité

  • ucef
    Avril 2009

    Bonjour,

    J ai un projet de fin d etude qui conçiste en la fabrique d’une moulinette qui devrait convertir tt type d entrée formats de fichier(provenant d’une BDD,SAP,....)en un seul format en sortie tres peu connu EDS(epost data stream)

  • Juin 2009

    les nouvelle possibilité offerte par le spip permettent de répondre à tout les besoins, je dev tout mes site avec ce cms depuis maintenant 5 ans.

    j’en profite pour dire un grand bravo a arno pour son travail, d’une trés grande qualité et tout ce qu’il a apporté à spip.

    j’aime paris , j’aime beyrouth et j’aime ce site paris-beyrouth, merci de m’inspirer si souvent :)

  • Al
    Juillet 2009

    Chapeau bas ! c’est du grand art.

  • Soon7
    Août 2009

    Hello,

    Spip a effectivement selon moi dépassé le statut de "simple" CMS à celui de frameworkd dès la branche 1.9, dès qu’il a été possible d’utiliser le système de boucles sur des tables autres que SPIP de façon native, de lier des tables non spip, etc, plus le système de plugins, rolàlà que du bonheur...

    Mais ce qui fait encore plus la force de spip parmi les autres solutions, ça reste sa communauté et toute la galaxie qui va avec, qui fait que si on a un souci, on peut le résoudre grâce à l’aide de tous.

  • Pierre
    Septembre 2009

    Je bosses avec SPIP depuis 2001 pour créer toutes sortes d’applications non prévus out of the box et ç’a n’a été que du bonheur.

    Ce qui m’échappe encore cependant, et ce n’est pas faute d’avoir cherché, c’est la méthode pour ajouter dans l’espace privé de nouveau objets éditoriaux au même titre qu’un article, une brève, etc. J’ai bien jeté un coup d’oeil au code de certains plugins qui le font, come Agenda par exemple. Regardé la doc relative aux pipelines, etc... ça m’échappe toujours. Je comprend comment réaliser un formulaire CVT mais pas comment écrire dans une base. Enfin je n’ai pas encore pigé comment fonctionne le dossier "privé" nouveau depuis 2.0. qui devrait sans doute donner des pistes sur la création de formulaires pour l’espace privé.

    Ce qui manque donc à mon avis est un tutoriel ou une doc simple pour expliquer comment fonction l’API dans le cadre de création de nouveaux objets éditoriaux soit dans l’espace privé ou publique.

  • Dimitri
    Septembre 2009

    Je rejoins Pierre. Un besoin récurent, aujourd’hui, c’est de créer de nouveaux objets éditoriaux personnalisés...

    Et je n’ai toujours pas trouvé la recette avec Spip.

  • Visiteur de passage
    Septembre 2009

    Bonjour,

    Je n’ai absolument pas été convaincu par votre article.

    Un framework (un vrai, j’y reviendrais), permet de développer tous types d’applications. Il impose un cadre de développement et fourni une API. La plupart exploitent le modèle incontesté qu’est le MVC.

    Dans vos exemples, vous utilisez Spip comme s’il s’agissait d’un défit. Mais reconnaissez que, précisément, vous n’en exploitez pas ou peu les caractéristiques. Dans votre premier exemple (ciné), rien ne justifiait l’emploi de Spip pour une unique page. Vous auriez directement dû la développer en PHP (plus simple, moins gourmand en ressource, plus... logique). Spip est adapté à de la publication éditoriale de contenus hiérarchisé, point. D’ailleurs, de nombreux utilisateurs avancés de Spip le reconnaissent.

    Le but, dans un développement, est d’utiliser un outil adapté, pas de tenter une performance avec un outil inapproprié.

    D’autre part, quand on parle de framework, on parle également d’API. Certains CMS, qui se disent framework, disposent d’une véritable API documentée (Drupal, Joomla, ...).

    Un framework sans API documentée est inutilisable.

    Où se trouve la documentation de l’API de Spip ? Une API existe t-elle seulement (le créateur du site programmer spip reconnait lui-même que Spip ne dispose pas réellement d’une API).

    Même la liste exhaustive des pipelines, avec leur rôle précis, n’existe pas...

    A moins de n’avoir jamais utilisé de véritables framework, je trouve qu’il est malhonnête d’associer ce terme à Spip.

    J’imagine que sur un site pro-spip comme le vôtre, ce commentaire (s’il parait) va faire des vagues ;-)

  • ju
    Avril 2010

    Je vais rompre le silence, même si ce commentaire ne le mérite pas. Google est ton ami, à trouver la doc de l’API de spip, il t ’aidera. Exemple, l’API sql de Spip. http://doc.spip.org/@API-sql_

    Bonne lecture !

  • Septembre 2010

    Décidément, la sphère Spip est vraiment à part... En quoi http://doc.spip.org/@API-sql_ est-elle une doc d’API.

    Pitié, allez jeter un oeil sur des outils pros. Vous verrez, vous aurez un regard plus objectif sur Spip !

  • Ronan
    Octobre 2011

    Etrange ces derniers commentaires... Va falloir retourner voir la définition d’un framework. Il y a des frameworks css, des frameworks javascript. L’auteur de cet article souligne que Spip peut être un "cadre de travail" menant à d’autres développements que les seules pages web. Il a raison, et pour l’avoir couramment utilisé ainsi, je confirme que c’est rapide et efficace.

    C’est sûr que si vous comparez Spip à Symfony, il y a un monde entre les deux ; Symfony ou Zend ont des docs d’apparence plus "pro", sont utilisés sur des projets plus complexes que Spip, mais l’objectif des deux outils est radicalement différent. On ne compare pas une lime à ongles et une scie électrique. La scie électrique est bien plus puissante et complexe, mais je ne l’utiliserai pas pour me faire les ongles (et vice versa).

    Je ne rentrerai pas dans les détails pour répondre à des messages préhistoriques et anonymes, mais à ceux qui viennent lire cet article, je dis : OUI, Spip pour générer du csv, du xml, du js, du json, c’est génial, plus lisible, plus facile à tester et plus sécurisé que de faire du code php pourri à la main. Quand on a besoin d’adosser des fonctions un peu plus avancées à un site, on ne fait pas du php de daube qu’on sera le seul à comprendre, et on n’installe pas non plus Zend Framework au prétexte que la doc est plus complète.

    La doc de Spip est un de ses points faibles, mais il faut aussi voir que son code est autrement plus lisible que celui des autres grands CMS ou "CMF"...

  • Bertrand
    Janvier 2012

    Le mot Framework n’est sans doute pas adapté puisqu’il suscite la polémique. SPIP, c’est en effet une "plateforme" qui permet de développer rapidement des applications riches et qui fonctionnement parfaitement. Avec un bon éditeur-debugger, David a raison de Goliath : peutêtre moins puissant, mais plus rapide et moins cher. Donc abordable pour les PME/PMI.

  • formatec
    19 avril

    Bonjour Arno, Cet article n’a pas vieilli à peu de choses près. Je vois que utilisais beaucoup flash. Je suppose que comme beaucoup tu en es revenu par obligation. Aujourd’hui je fouille un peu Flashbuilder Flex et Air. Pour le développement d’appli cela semble terrible et en lieu et place du XML dont tu parles ci dessus, il suffit de produire du JSON. L’interfacage Spip+JSON, vers AS et FLEX pour sortir une APK semblerait toujours faire de spip un formidable framework.

    Qu’en penses tu ? As tu testé ces solutions ? ou as tu fais d’autres choix techno pour envoyer du contenu spip vers des applis ?

  • ARNO*
    19 avril

    Non, en fait je n’ai jamais « beaucoup » utilisé Flash pour les sites Web. J’ai ai utilisé pas mal sur mon magazine de mode (http://www.orientpalms.com) à l’époque, parce que j’avais besoin d’une animation « tourne-page ». Mais ça fait belle lurette que j’ai remplacé ça par du HTML aussi efficace. Quand les clients y tenaient, j’ai fait des carrousels en page d’accueil, mais franchement, j’ai toujours annoncé que c’était pas une bonne idée. À l’époque, quand je pouvais, je faisais déjà ce qu’on appelait du « DHTML » :-))

    En revanche, désormais, effectivement je fais pas mal d’« applis », soit sur des gros dispositifs tactiles (tables interactives), soit sur tablette/smartphone. Pour les gros dispositifs, ce qu’on fait généralement, c’est d’aspirer le site en statique, et de l’installer dans un dossier Windows avec Chrome en mode kiosque. Et quand on doit livrer des « apps » IOS ou Android, pareil j’aspire le site en local, et je passe ça dans Cordova : https://cordova.apache.org

Qui êtes-vous ?
Votre message

Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.