Skip to topic | Skip to bottom
Home
Search:

Local
Local.ImcMarseilleSyndicationr1.9 - 12 Oct 2006 - 14:51 - ThierrYtopic end
You are here: Local > ImcMarseille > ImcMarseilleEchangesSavoirs > ImcMarseilleSyndication

Start of topic | Skip to actions

Comment syndiquer les autres sites

Comment ajouter un bloc de syndication

Supposons que l'on veuille syndiquer les NOMBRE derniers items du fil ADRESSE

On peut le faire sous 3 formats differents en utilisant 3 FONCTION differentes :

  • SyndicationListe cree une liste avec les derniers titres et l'auteur, c'est utile pour mettre un court bloc de syndication au milieu d'une page.
  • SyndicationColonne cree une liste sans pastilles avec les derniers titres et l'auteur, c'est utile pour mettre un court bloc de syndication dans la colonne de gauche par exemple.
  • SyndicationListeContenu cree une liste avec auteur titre et contenu, c'est utile pour reprendre non seulement les titres, mais aussi un resume du texte (a eviter dans une colonne fine).

Formule magique

<?php
   require_once "/imc/sf-active/marseille/local/syndication/syndication.php";
   echo FONCTION("ADRESSE", NOMBRE);
?>

Exemple Pour lister les 5 derniers titres de la colonne de droite du site global, il suffit de mettre :

<?php
   require_once "/imc/sf-active/marseille/local/syndication/syndication.php";
   echo SyndicationListe("http://indymedia.org/global.1-0.rss", 5);
?>

Dans une page de process ou dans la colonne de gauche

Il suffit d'utiliser la formule magique telle quelle

Dans la colonne centrale d'une categorie

Helas, il ne semble pas possible d'ajouter du php dans les templates ou dans le corps d'un texte de friture. Il faut donc atthacker certains fichiers, au risque de s'ecarter de sf-active. Allons-y gaiement smile

Supposons que l'on veuille faire une friture d'en-tete de la categorie monde avec une syndication des titres des derniers articles de la colonne de droite du site global http://www.indymedia.org

On ne peut pas rediger cette friture via la methode classique, meme en creant un template special syndication frown

Du coup on va creer un nouveau fichier include (via la partie admin) dont le nom sera index_center_monde.inc et qui sera une copie du fichier index_center.inc

On rajoute au debut de ce fichier le contenu de la friture d'en-tete (du html de base comme pour une friture classique, avec titres, images...) et la formule magique la ou on veut que la syndication se fasse.

Ensuite, il faut editer le fichier /imc/sf-active/marseille/website/features/monde/index.php et remplacer la ligne include(SF_INCLUDE_PATH. '/index_center.inc'); par include(SF_INCLUDE_PATH. '/index_center_monde.inc');

Le probleme est que ce fichier appartient a apache:marseille mais y'a que apache qui a le droit de le modifier, donc en gros il faut se connecter sur le chat d'indymedia au salon #ahimsa pour demander que les droits de ce fichier soient changes en -rw-rw-r-- (ca a ete fait pour les categories existantes mais le probleme se reposera pour les categories crees ulterieurement).

Et si le serveur distant demande a ce qu'on s'identifie

Il se peut que la page que l'on veut syndiquer ne soit visible que si un UTILISATEUR s'est identifie avec son PASS pour cela, il suffit de remplacer l'ADRESSE http://blablabla par http://UTILISATEUR:PASS@blablabla dans la formule magique.

Exemple Pour lister les 10 dernieres pages qui ont ete modifiees sur l'espace collaboratif de fonctionnement du collectif, il suffit de mettre :

<?php
   require_once "/imc/sf-active/marseille/local/syndication/syndication.php";
   echo SyndicationListe("http://MarseilleGuest:guest@docs.indymedia.org/viewauth/Local/ImcMarseilleRss?contenttype=text/xml&skin=rss"", 10);
?>

Le cas du site de Nice

Le flux genere par le site de Nice n'est pas compris par le parseur (il presente des caracteres qui ressemblent a &#8217 ;), donc on a fait un petit programme qui le remet en forme (le fichier source se trouve ici). Concretement, si on vaut faire un bloc de syndication du site de Nice, il suffit de remplacer l'adresse http://nice.indymedia.org/backend.php3 par http://marseille.indymedia.org/syndicationnice.php dans la formule magique. Noter que les articles de colonne centrale sont listees dans le meme fichier avant les contributions (il faudra donc modifier un peu le syndication.php pour permettre de selectionner les contributions).

Qu'est-ce qui a ete fait techniquement

Il est important d'avoir une trace de ca quelque part pour pouvoir evoluer et migrer sans douleur lorsque la syndication sera une fonctionalite de sf-active.

Sources

Importation des sources

Les lignes suivantes ont ete tapees :

Creation des fonctions qui facilitent l'utilisation

Un fichier syndication.php (dont le contenu est copie plus bas) a ete cree et ajoute au repertoire /imc/sf-active/marseille/local/syndication/

Gestion du cache

Le cache permet de sauvegarder les fils rss pour ne pas avoir a les retelecharger a chaque requete (cela consomme de la bande passante inutilement (ainsi que du temps de calcul pour des pages generees par twiki)).

Choix du repertoire de cache

Par defaut, magpierss cree un repertoire cache dans le meme repertoire a partir duquel il a ete appelle (par exemple; si on met un bloc de syndication dans la page liens.php, un repertoire cache sera cree dans /imc/sf-active/marseille/website/process). Un probleme de cette configuration est que ca cree plein de repertoires un peu partout. Un autre probleme est que la ou apache n'a pas le droit de creer de repertoire, le cachene marche pas.

Pour eviter tout ca, on fait en sorte que tous les fichiers de cache soient regroupes dans /tmp/marseillesyndicationcache en ajoutant la ligne

define('MAGPIE_CACHE_DIR', '/tmp/marseillesyndicationcache');

au debut de la fonction init dans le fichier /imc/sf-active/marseille/local/syndication/rss_fetch.inc

Temps d'attente

Par defaut, l'intervalle de temps entre 2 mises a jour des fils de syndication est une heure, on peut le changer dans le fichier /imc/sf-active/marseille/local/syndication/rss_cache.inc

var $MAX_AGE    = 3600;         // when are files stale, default one hour

Sources du fichier /imc/sf-active/marseille/local/syndication/syndication.php

C'est pas forcement une copie exacte dans la mesure ou y'a pas mal de modifications qui vont y etre faites, en esperant que cette page sera mise a jour regulierement : syndication.php.txt
to top

You are here: Local > ImcMarseille > ImcMarseilleEchangesSavoirs > ImcMarseilleSyndication

to top

Copyright © 1999-2008 by the contributing authors.
All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding this tool? Send feedback (in English, Francais, Deutsch or Dutch).