Bonsoir tout le monde,
Dans le cadre du lancement du site http://mouvements.be/ -- un portail
de syndication du web militant belge basé sur l'exemple de rezo.net --,
j'ai besoin d'utiliser la syndication intensivement mais aussi d'avoir
sur les articles syndiqués une série de possibilités qui ne sont
disponibles que sur les articles (mots-clés, auteurs, statistiques,
logos, possibilité de modification du descriptif, etc). Bref, après une
intéressante discussion avec Fil (que je remercie au passage), il s'est
avéré que le plus simple consistait à faire en sorte que les sites
soient syndiqués directement dans la table articles, et plus dans la
table syndic_articles.
Je me suis donc lancé dans un hack de spip, avec des résultats assez
encourageants pour que je poste ici (mais pas assez pour que je poste
mes misérables essais sur la zone, me semble-t-il).
1. J'ai complètement modifié les fichiers ecrire/inc_sites.php3 et
sites.php3 pour qu'ils utilisent la table article en lieu et place de la
table syndic_articles, mais aussi pour que le statut par défaut des
articles syndiqués soit "prop" (et non plus "off"), ce qui permet de
traiter les propositions de syndication non plus sur un mode binaire
mais sur un mode ternaire (proposée, accepté, refusé), qui est beaucoup
plus efficace, me semble-t-il. L'utilisation du statut "prop" permet
aussi d'avoir les articles syndiqués qui arrivent au fur et à mesure
dans la page d'accueil de l'interface privée, ce qui est assez pratique.
Par convention, voici la manière dont les données destinées à
syndic_articles sont entrées dans la table articles :
url surtitre
lesauteurs soustitre
source nom_site
url_source url_site
Les deux fichiers sont visibles ici :
http://mouvements.be/inc_sites.php3.txt
http://mouvements.be/sites.php3.txt
2. J'ai ajouté une routine qui :
a) crée les rubriques quand c'est nécessaire en se basant sur les sites,
b) synchronise les rubriques avec les sites (si on modifie un site, la
rubrique correspondante sera modifiée aussi) et
c) ajoute les id_secteur aux articles qui n'en ont pas.
d) force tous les sites syndiqués à se trouver dans la rubrique 1.
J'ai placé ce code au pied de sites.php3, comme ça il s'exécute chaque
fois qu'on modifie un site.
3. J'ai interdit la modification et la création de nouvelles rubriques
(les rubriques étant synchronisées sur les sites, toute modification
d'une rubrique serait écrasée), en ajoutant ceci comme un barbare dans
rubriques_edit.php3 :
print("action interdite");
return;
4. J'ai modifié inc_articles.php pour :
- faire en sorte que la date ne soit pas mise à jour quand on
publie un article (c'est la date de syndication qui prévaut,
comme c'est le cas quand on valide un article dans la table
syndic_articles), en commentant les lignes 495 et 496.
- virer le traitement typo sur le surtitre et le rendre
cliquable. J'ai remplacé la ligne 602 par ceci :
echo "<a href=\"".$surtitre."\">".$surtitre."</a>";
Tout n'est pas encore parfait, mais ça fonctionne. Le principal truc que
je dois encore faire est de retravailler l'affichage dans le fichier
sites.php3 pour :
- modifier la petite puce de couleur pour gérer le statut "prop"
en plus de "publie" et "off" (comme sur un listing d'articles
"normaux").
- faire un lien vers la page d'édition de chaque article
(et non seulement vers l'url réel de l'article)
Je compte aussi modifier l'affichage de la page d'accueil de l'interface
privée pour indiquer entre parenthèses à côté de chaque article la rubrique
dans la laquelle il se trouve, ainsi qu'un lien direct vers son url réel.
Voilà, voilà
au plaisir de lire vos réactions;
François