SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 220 visiteurs en ce moment

Accueil > Administration et BDD > Import-Export > Migre static > Archives Migre static > Faire migrer un site statique vers SPIP

Faire migrer un site statique vers SPIP

29 décembre 2006 – par Beurt – 10 commentaires

5 votes

Attention, cette contribution est EN CHANTIER : elle n’est peut-être pas fonctionnelle.

Récupérer des pages HTML pour les intégrer dans SPIP est fastidieux, surtout quand on veut migrer un site statique entier vers ce gestionnaire dynamique de site web. Face à ce problème, j’ai du développer un outil pour m’y aider qui prend la forme d’un squelette.

Nota Spip-contrib
Une contrib pas complètement bordée, mais qui devrait intéresser du monde, donc publication. N’hésitez pas à utiliser ce forum pour vos suggestions et contributions.

Il existe désormais un plugin pour SPIP>1.9 réalisé par chryjs, qui rempli encore mieux cette fonction que ce squelette : Migre static - plugin de migration d’un site. À moins que vous n’utilisiez une version de SPIP plus ancienne que la 1.9, vous avez tout intérêt à vous tourner vers le plugin.

Objectifs du squelette :

Récupérer toutes les pages d’un site web statique pour en faire des articles dans SPIP. Tout cela en prenant quelques précautions :
-  Veiller à améliorer le coté sémantique et à rendre l’article modifiable dans SPIP par des rédacteurs : transformer autant que possible le HTML des pages web en raccourcis typographiques de SPIP.
-  Rendre les images, documents et liens valides dans SPIP : donc transformer les adresses web qui seraient relatives à l’ancien site en adresses absolues.
-  Veiller à ce que les transformations ne soient pas destructives.
-  Garder de la « traçabilité » : il doit être possible de comparer facilement le nouvel article (dans SPIP) avec l’ancien (sur le site statique).

Comment l’installer et l’utiliser :

Pour l’installer c’est très simple : placez le fichier « migration.html » dans votre répertoire de squelettes (en général « squelettes »).

Pour l’utiliser, il faut d’abord y faire des petites modifications :

Dans le code source du squelette il y a des commentaires comme :
« //***À modifier par les utilisateurs*** » aux alentours des lignes 34 et 57.

-  Au premier endroit, ligne 34 :

Vous devez modifier l’URL « http://undomaine.truc/la_liste_des_pages.html » par l’adresse internet d’un fichier qui contient la liste des pages à migrer sous forme de liens absolus (du type « <a href="http://mondomaine.tld/chemin/truc/bidule/unedespages.html">titre ou bien http://mondomaine.tld/chemin/truc/bidule/unedespages.html</a> »).

-  Au second endroit, ligne 57 :

Vous devez modifier les variables avec l’id [1] de l’auteur que vous affectez à l’article (ici n°18), de la rubrique dans laquelle vous mettez —sans doute temporairement— l’article (ici n°12) et d’un mot-clé que vous associez à l’article (ici le mot clé n°151. Cela me sert à identifier facilement les articles migrés automatiquement).

Si vous utilisez SPIP 1.8.3 ou des versions antérieures, vous devez créer à la racine de votre site SPIP un fichier nommé « migration.php3 » qui contient :

Pour Spip 1.9 et suivants, cette manipulation n’est pas nécessaire [2]

Ensuite il ne reste plus qu’à appeler la page du squelette concernée pour que la migration démarre : avec SPIP 1.9 et suivants c’est « http//votresite/spip.php?page=migration », avec un SPIP plus ancien c’est « http//votresite/migrations.php3 ».

Ce que ce script fait en détail :

  1. Ce squelette récupère une liste d’adresses internet contenues
    dans la page web http://undomaine.truc/la_liste_des_pages.html (à changer bien sûr), qui contient une suite de liens hypertexte vers les pages à migrer dans spip.
  2. Pour chaque adresse du site statique récupérée, il extrait le titre (ce sera le titre de l’article SPIP), isole le <body></body> de la page et le traite de la façon suivante :
    1. complétion des chemins relatifs, afin d’obtenir des chemins absolus,
    2. transformation des balises p, b, i, em, strong, hx en raccourcis typo de SPIP,
    3. transformation des liens type <a href=""></a> en [->] à la SPIP.
  3. Puis le <body></body> modifié est intégré dans un nouvel article SPIP avec :
    • un auteur choisi
    • un mot-clé choisi
    • un lien vers la page originelle
    • le tout dans une rubrique choisie
    • l’article a le statut « en cours de rédaction »
  4. Affiche dans le navigateur le résumé de tous les travaux du script.

Les limites de la solution proposée :

La limite principale est que je ne sais pas du tout programmer ! J’ai bidouillé à droite à gauche, le nez dans la doc de php et en jetant des coups d’œils ailleurs sur le web. J’ai fait de nombreux tests chez moi et ça marche même si je ne suis pas encore satisfait.

Il est évident que compte tenu de mon absence de compétence en php, le code doit être particulièrement « gruik » comme disent les Geeks et donc truffé de bogues et amplement perfectible (donc, à vos contributions !)...

Ce qui me manque encore (TODO par quelqu’un d’autre parce que moi je suis pas sûr d’y arriver en moins de 10 ans) :

-  Rendre le squelette plus accessible aux gens qui n’aiment pas se compliquer la vie : Le rendre capable de parcourir le site statique lui-même et d’y relever directement les adresses des pages à faire migrer (et non pas devoir passer par une série de find . -name "*.htm*">~/la_liste_des_pages.txt et d’expression régulières en perl pour obtenir seulement la liste des pages web).

-  rendre propre le HTML avant de le mettre dans Spip. Car les pages web statiques à migrer dans Spip ont été écrites avec divers éditeurs genre Frontpage et Dreamweaver et le code est très sale. Il n’est pas rare d’y voir :

avec des balises non fermées bein sûr, etc. J’ai essayé avec tidy (voir code php dans le squelette), sans succès.

-  Insérer les images et docs dans la base de donnée... Là c’est plutôt complexe. Je pense que je pourrais parvenir à tout insérer sans discernement et remplacer le HTML par le raccourci qui convient, mais le gros problème vient du fait que de nombreuses images (de déco principalement, genre puces et logos) sont réutilisées dans plusieurs pages web. Le pire étant que ces images, bien qu’identiques sont en plusieurs exemplaires sur le site statique, à des URL différentes.

-  transformation de certains raccourcis typos comme :

    • Les ancres et les hr à transformer en raccourcis typos
    • Les ol/li et ul/li à transformer par des puces-typo de SPIP : il faut faire un truc récursif et ça me fait très mal à la tête d’essayer de trouver comment on fait.

-  Enfin ultime désir qui ne sera jamais satisfait : Que le code HTML des pages statiques soit nettoyé de tous ces horribles enchevêtrements de tableaux qui servent à la mise-en-page et vont casser celle de SPIP basée sur de merveilleux CSS. Mais est-ce humainement possible de concevoir ça ?

Pour conclure

Voilà ! Ce script (qui est devenu squelette parce que je n’arrivais pas autrement à utiliser « spip_query ») j’y réfléchis depuis environ un an (mais pas souvent hélas) et je me suis mis à écrire (et surtout débugger chaque instruction, tant je suis nul) depuis quelques semaines. Il va me rendre un fier service car je n’ai pas loin de 2000 pages statiques à faire passer dans SPIP.

Il ne fait pas tout le boulot (classement dans SPIP dans les bonnes rubriques et avec les bon mots-clés, récupération de l’auteur, de la date, et d’autres babioles), mais aide quand même pas mal.

J’espère qu’à vous aussi il sera utile !

P.-S.

-  Je compte sur vous pour m’aider à « déguiker » ce squelette, pour qu’il fonctionne vite, bien et proprement chez tout le monde (et puis peut-être que vous pourriez vous pencher sur ma TODO list ! :o))
-  Merci aux écureuils de Wikipédia (suivre les liens des noms d’espèce pour les retrouver tous) d’avoir tenu la pause pour le logo de cet article...

Notes

[1c’est à dire le numéro, celui qui s’affiche à gauche dans l’espace privé de SPIP

[2Pour de plus amples informations, allez lire Doc de SPIP : Où placer les fichiers de squelettes ?.

Dernière modification de cette page le 4 octobre 2011

Retour en haut de la page

Vos commentaires

  • Le 16 janvier 2007 à 09:26, par marabbeh En réponse à : Faire migrer un site statique vers Spip

    Très utile cette contrib ! Justement j’ai aussi des pages HTML migrer sur spip.

    Mais telle quelle, cette contrib ne me va pas :-). Est-il possible d’y contribuer et de définir des objectifs ensemble ?

    • Le 16 janvier 2007 à 09:43, par Beurt En réponse à : Faire migrer un site statique vers Spip

      Cette contrib’ est GPL donc tu peux y contribuer et la modifier sans souci.

      Pour ma part, avant de la mettre « en production » j’ai fait quelques petites modifs que je répercuterai d’ici la fin de la semaine (surtout sur la conversion en raccourcis typos).

      Pour ce qui est de définir des objectifs, je ne suis pas sûr d’avoir le temps de beaucoup y travailler désormais que la migration de mon site est faite. Mais je suis ouvert à toute discussion-modification-contribution !

    • Le 23 janvier 2007 à 07:08, par marabbeh En réponse à : Faire migrer un site statique vers Spip

      Je vois ça comme ça :

      -  Définition de règles de transformation de code html en spip (comme ... en ...), communes à toutes les pages. Je suggère d’écrire ces règles dans un fichier .txt, afin de pouvoir les améliorer et/ou les adapter à son site.
      -  Parcours de tous les fichiers d’une structure répertoires/pages, où les répertoires deviendront des sous-rubriques et les pages des articles.
      -  Pour chaque page, parcours du code html pour nettoyage des balises et attributs périmés (notamment ), et en même temps exécution des règles de transformation. Le code est alors sous la forme d’une arborescence de balises.
      -  Réécriture du code nettoyé et transformé.
      -  Création du nouvel article.

      Pour l’instant j’ai réalisé le nettoyage du code html (3e et 4e actions) de pages écrites avec FrontPage. Il m’en faudrait d’autres pour tester.

      Mais j’ai des problèmes :
      -  pour parcourir une arborescence de répertoires/pages, il faut la télécharger sur le site (d’un autre côté, ça évite le vol de site)
      -  je n’ai pas résolu les problèmes des images...

    • Le 8 mars 2007 à 19:16, par virinxx En réponse à : Faire migrer un site statique vers Spip

      Bonjour,

      Je trouve cet article interressant car je suis un nouveau venu dans le monde spip.
      Le seul probleme est que je n’arrive pas à utiliser ce script.
      En effet dès que j’essai, il ne me trouve rien (j’ai un message d’erreur).
      Pour info, mon fichier et dnas un répertoire squelettes/.
      J’utilise la dernière version de SPIP.

      Quelqu’un peut m’aider SVP.
      Merci !

    • Le 25 mars 2007 à 00:14, par LMD En réponse à : Faire migrer un site statique vers Spip

      Bonsoir,

      cet article m’intéresse aussi beaucoup, j’ai un site statique de 500 articles à migrer sous SPIP ....

      j’ai essayé le script, j’obtiens :

      traitement de aa.html

      Warning : file_get_contents(aa.html) [function.file-get-contents] : failed to open stream : No such file or directory in /home/xxx/www/xxx/ecrire/public.php(173) : eval()’d code on line 94
      titre :aa.html

      L’article n°0 (titre : aa.html ) est dans la base de Spip !

      j’ai raté quelque chose ?

      La fonction file_get_contents est censée se trouvée où ?
      Pour info je suis au dernier niveau de Spip, et hébergé chez OVH.

      Merci par avance.

    • Le 6 mai 2007 à 00:00, par Amaury En réponse à : Faire migrer un site statique vers Spip

      j’ai moi aussi un souci. Tout à l’air de bien fonctionner puisque j’ai une page me listant l’intégralité des articles et me disant qu’ils ont été ajoutés à la base de spip mais lorsque je fais un petit tour sur la partie privée, aucun d’entre eux n’apparaît.
      J’ai fait attention à ce que l’identifiant de l’auteur soit bien le bon (pas dur, il n’y en a qu’un) et à ce qu’une rubrique réceptrice existe (pas dur là aussi)

      J’avoue que je sèche complètement.

      Aurais-je raté quelque chose ?

    • Le 10 mai 2007 à 13:00, par ? En réponse à : Faire migrer un site statique vers Spip

      J’ai exactement le même problème, je paramètre tout comme il faut (j’ai vérifiée plusieurs fois) et j’ai le message disant que tout est bien inséré dans la base spip, et quand je m’y rend il n’y a absolument rien... étrange... quelqu’un de calé en devellopement pourrais t’il dire pourquoi ? car cet outil est , dans l’absolu, exactement ce que je recherche, même si il n’est pas complet. Ca m’évitera de faire 200 ou 300 copier / coller ...

    • Le 10 juin 2007 à 11:10, par Amaury En réponse à : Faire migrer un site statique vers Spip

      En fait, il semblerait que tous les articles se retrouve avec le numéro d’identifiant 0 et que celui-ci ne s’incrémente pas. Peut-être faudrait-il creuser de ce côté là mais mes compétences techniques sont un peu limites.

    Répondre à ce message

  • Le 15 mars 2007 à 22:32, par ? En réponse à : Faire migrer un site statique vers Spip

    Bonjour,
    J’essaie d’utiliser la contribution « Faire migrer un site statique vers spip » http://www.spip-contrib.net/Faire-migrer-un-site-statique-vers#forum391856

    j’obtiens ce message

    titre :ADBDP : journées 2002 : Didier Guilbaud
    <http://www.adbdp.asso.fr/associatio...>

    /L’article n°0 (titre : ADBDP : journées 2002 : Didier Guilbaud ) est dans la base de Spip !/ <http://www.adbdp.asso.fr/associatio...>


    fini !
    *Fatal error* : Cannot break/continue 1 level in *c :\program files\easyphp1-8\www\spipadbdp\ecrire\public.php(173) : eval()’d code* on line *49* <http://www.adbdp.asso.fr/associatio...>

    Est-ce un abonné à déjà utiliser cette contribution avec succès et pourrait éclaire ma lanterne.
    Cordialement. BS

    Répondre à ce message

  • Le 9 mars 2007 à 14:43, par ? En réponse à : Faire migrer un site statique vers Spip

    Félicitation, pour quelqu’un qui affirme ne pas savoir coder, c’est plutôt bien.
    Pour ma part si j’avais 2000 pages à transcrire.
    wget -m permet de faire un mirroir en local sur sa machine
    find la_racine_du_site_local -iname « *.htm[l]* » |xargs un_sous_programe

    dans le sous programme
    nettoyage du html et transformation en xml avec tidy (c’est fait pour cela) avec l’option -asxhtml
    utilisation d’une feuille, ou plusieurs xslt pour faire la transformation et écrire automatiquement le programme php d’importation
    (la transformation peut être faite avec xsltrpoc ou avec les possibilité de manipulation XML de php5)
    L’avantage de la feuille xslt et la manipulation « facile » quand on maitrise le xslt.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Champs Extras 3

    16 janvier 2012 – 524 commentaires

    Ce plugin permet de créer et/ou de gérer des champs supplémentaires dans les objets éditoriaux de SPIP. Il permet donc de prendre en compte et d’afficher de nouveaux éléments dans n’importe quel objet éditorial de SPIP. Screencast Vous n’aimez pas (...)

  • Réservation d’événements

    16 mars 2015 – 188 commentaires

    Ce plugin permet d’offrir aux visiteurs de s’inscrire pour un évènement du plugin Agenda et de gérer les réservations enregistrées. Installation Le plugin s’installe comme n’importe quel plugin. il nécessite : Agenda API de vérification (...)

  • Les crayons

    23 avril 2008 – 815 commentaires

    Ce plugin permet d’éditer les contenus sur les pages publiques du site, sans passer par l’espace privé de SPIP.

  • LESS pour SPIP : Less-CSS (anciennement LESSpip)

    5 novembre 2010 – 43 commentaires

    Less-CSS (Anciennement LESSpip) est un plugin intégrant facilement le logiciel LESS dans SPIP. LESS est une extension de CSS ajoutant les variables, les classes, les opérations, les imbrications au langage. Facilitant ainsi l’écriture de (...)

  • Recommander

    3 avril 2011 – 16 commentaires

    Ce plugin propose une manière simple de suggérer de recommander par email un article à un ami. Fonction « recommander un article à un ami ». On l’ajoute dans n’importe quel squelette sous la forme : #RECOMMANDERtitre de la page,url de la page,intro (...)

Ça spipe par là