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 :
//***À modifier par les utilisateurs***
$dochtml=recup_page('http://undomaine.truc/la_liste_des_pages.html'); //renseigner avec l'URL de la liste des pages
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 :
//Quelques variables qu'il faut changer en fonction des cas:
//***À modifier par les utilisateurs***
$auteur=18; //id_auteur de tous les articles récupérés dans SPIP
$id_rub=12; //id_rubrique de ces articles
$id_mot=151; //id_mot à affecter à chaque article.
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 :
<?php
$fond='migration';
$delais = 12 * 3600;
include ('inc-public.php3');
?>
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 :
- Ce squelette récupère une liste d’adresses internet contenues
dans la page webhttp://undomaine.truc/la_liste_des_pages.html
(à changer bien sûr), qui contient une suite de liens hypertexte vers les pages à migrer dans spip. - 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 :- complétion des chemins relatifs, afin d’obtenir des chemins absolus,
- transformation des balises p, b, i, em, strong, hx en raccourcis typo de SPIP,
- transformation des liens type
<a href=""></a>
en[->]
à la SPIP.
- 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 »
- 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 :
<font face="Symbol"><p>·</font><font face="Arial"> </font><font face="Arial" size="2">Gniagniagnia<br>
<font face="Symbol" size="2">·</font><font face="Arial" size="2">
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.
-
- J’utilise la formidable contrib’ Génération automatique de numérotation, table des matières et références (dont on se demande pourquoi ce n’est pas encore en standard dans SPIP) de chtitux et mortimer et j’aurai aimé récupérer les niveaux des
<hx>
sous la forme de «{{{*
», où le nombre d’étoiles correspond au niveau du titre. Là encore, c’est un truc récursif qui m’échappe.
- J’utilise la formidable contrib’ Génération automatique de numérotation, table des matières et références (dont on se demande pourquoi ce n’est pas encore en standard dans SPIP) de chtitux et mortimer et j’aurai aimé récupérer les niveaux des
- 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 !
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |