Gestion de Contenu, de Communauté et de groupes de travail collaboratif - Open Source, français, sécurisé, stable et performant

  • MODULES

    Pour étendre les nombreuses fonctionnalités disponibles de base - modules.npds.org est à votre disposition.

    Des modules complémentaires, une communauté de développeurs active, des forums pour vos questions ... NPDS  est aussi une plateforme de développement !
  • STYLES

    Vous cherchez des thèmes graphiques pour votre portail ou votre communauté : styles.npds.org est à votre disposition.

    Des thèmes du plus simple au plus sophistiqué. Des thèmes facilement modifiables et toujours en Open-Source - Laissez simplement parler votre imagination !
  • BIBLES

    La documentation indispensable pour personnaliser et exploiter toute la puissante de NPDS  est à votre disposition sur bible.npds.org.

    Vous pouvez participer à l'effort de documentation - rien de plus simple : contactez un membre de la Team de développement et nous vous ouvrirons un compte sur le Wiki !
Devenir membre    |    Identifiant : Mot de Passe : -
Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.
Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu grâce aux puissants outils disponibles de base.
  • Multi langues (Français, Anglais, Allemand, Espagnol, Chinois)
  • Respect des standards : UTF8, XHTML, CSS, ...
  • Système de blocs avancés
  • Installation et administration complète et centralisée
  • Editeur HTML intégré
  • Gestionnaire de fichier en ligne
  • Gestion des groupes de membres
  • Ecriture collaborative de documents (PAD)
  • Forums évolués
  • Mini-sites (pour les membres et les groupes de travail)
  • Chat temp réel
  • Système de News et de rubriques complet (édition, révision, publication)
  • ...
Gratuit et libre (Open-Source), développé en PHP, NPDS est personnalisable grâce à de nombreux thèmes et modules et ne requiert que quelques compétences de base.
NPDS Workplace - groupe de travail collaboratif
 NPDS WorkSpace - tous l'univers du travail collaboratif.
Modéré par : developpeur jpb Jireck 
Index du Forum » » Le coin des codeurs » » mettre un fil RSS dans un bloc
Auteurmettre un fil RSS dans un bloc
PhilGuen
986      

PhilGuen
  Posté : 23-02-2012 14:30

Bonjour à tous,

headlines ne fonctionnant pas correctement, je suis en train de tester d'autres moyens d'obtenir un fil RSS.

J'ai adapté le code suivant, issu de la bibliothèque "fil_le".



<?php
// --------------------------------------------------------
// d'après parse_flux-2 pour lire des fichiers& nbsp;RSS/RDF/Atom
// Dominique WOJYLAC < <a href=" <a href="http://wojylac.free.fr>"" target="_blank" class="noir">http://wojylac.free.fr>"</a> target="_blank" class="noir"> <a href="http://wojylac.free.fr></a>" target="_blank" class="noir">http://wojylac.free.fr></a></a>
// Distribué sous GNU General Public License. < br />// 
// Version 2.1c
// ---------------------------------------------------------
// fonction destinée à nettoyer le texte r écupéré
// que l'on pourrait séparer de ce code&nb sp;en la mettant dans un fichier à inclure < br />
function clean_text($text$encodage '') {
    if ($encodage == 'utf-8') {
        $text = utf8_decode ($text);
    }
    $avant = array(
        '<',
        '>',
        '"',
        '&',
        '|@|' // pour  traitement correct des caractères spéciaux préalableme nt remplacés (voir plus bas)
        );
    $apres = array(
        '<',
        '>',
        '"',
        '&',
        '&#'
        );
    $text = str_replace($avant, $apres,&nb sp;$text);
    return $text;
}

function lit_RSS($flux,$delai,$nbnews,$affichage) {

!include!_once 'rss_read.inc.php'; 
$rss = new rss_read();

    // il est considéré comme n' étant pas en cache on le génére
    $data = '';
    
    // caractères parasites pouvant ê tre contenus dans le fils rss et à remp lacer par d'autres
    // doit être invoqué avant p arsefile
    // cette fonction est optionnelle  et ne doit être utilisée que pour cert ains fils.
    $avant = array('&#','•');
    $apres = array('|@|','-');
    $rss -> to_replace_with($avant, $ap res);

    // parser le fichier news
    $res = $rss -> parsefile($flux );
    
    if ($res) {
        $encode = $rss  ;-> get_encoding();
        
        // recupération des  données sur le channel
        $channel = $rss&nbs p;-> get_channel();
        
        // affichage site,& nbsp;url, description 
        $data =  '< p  class=\'flux-RSS\'><a href="'. $channel['link'].'"  target="_blank">'. clean_text($channel['title'], $encode).&n bsp;' - RSS fead</a></p>';
        
        // nombre d'items&n bsp;
        //$nbnews = $rss&nb sp;-> get_num_items();
        
        // recup array  ;des données 
        $items = $rss  -> get_items();
        
        $data .= '<dl&nb sp; class=\'flux-RSS\'>';
        for($i = 0; $i  < $nbnews; $i++) { 
            if&nb sp;($affichage == '1') {
              ;   $data .= '<dt>- '.clean_text($items[$i] ['link'], $encode).'</dt>'."\n";  
            }&nbs p;else {
              ;   $data .= '<dt>- <a href="'.$ite ms[$i]['link'].'" target="_blank">'.clean_text($items[$i]['title'],&nbs p;$encode).'</a></dt>'."\n"; 
            }
        }
        
        $data .= '</dl&g t;';
    } // fin if $rss
return $data;        
}
$content = "";
$content .= lit_RSS(' <a href=" <a href="http://www.pedigreedatabase.com/german_shepherd_dog/rss.classified_latest','600','5','1');"" target="_blank" class="noir">http://www.pedigreedatabase.com/german_shepherd_dog/rss.classified_latest','600','5','1');"</a> target="_blank" class="noir"> <a href="http://www.pedigreedatabase.com/german_shepherd_dog/rss.classified_latest','600','5','1');</a>" target="_blank" class="noir">http://www.pedigreedatabase.com/german_shepherd_dog/rss.classified_latest','600','5','1');</a></a> 
//echo $content; // débug
?>




et je l'appelle en faisant



!include!#modules/fil_le/lecteurRSS.php 



dans le contenu d'un bloc.

ca c'est OK.

L'idéal serait d'appeler ce code comme une fonction en passant les paramètres adéquat

J'ai donc fait ceci

dans header_before.inc



if (file_exists("./modules/fil_le/lecteurRSS.php")) !include!_once("./modules /fil_le/lecteurRSS.php");



et modifié le code comme suit



<?php
// --------------------------------------------------------
// d'après parse_flux-2 pour lire des fichiers& nbsp;RSS/RDF/Atom
// Dominique WOJYLAC < <a href=" <a href="http://wojylac.free.fr>"" target="_blank" class="noir">http://wojylac.free.fr>"</a> target="_blank" class="noir"> <a href="http://wojylac.free.fr></a>" target="_blank" class="noir">http://wojylac.free.fr></a></a>
// Distribué sous GNU General Public License. < br />// 
// Version 2.1c
// ---------------------------------------------------------
// fonction destinée à nettoyer le texte r écupéré
// que l'on pourrait séparer de ce code&nb sp;en la mettant dans un fichier à inclure < br />
function clean_text($text$encodage '') {
    if ($encodage == 'utf-8') {
        $text = utf8_decode ($text);
    }
    $avant = array(
        '<',
        '>',
        '"',
        '&',
        '|@|' // pour  traitement correct des caractères spéciaux préalableme nt remplacés (voir plus bas)
        );
    $apres = array(
        '<',
        '>',
        '"',
        '&',
        '&#'
        );
    $text = str_replace($avant, $apres,&nb sp;$text);
    return $text;
}

function lit_RSS($flux,$delai,$nbnews,$affichage) {

!include!_once 'rss_read.inc.php'; 
$rss = new rss_read();

    // il est considéré comme n' étant pas en cache on le génére
    $content = '';
    
    // caractères parasites pouvant ê tre contenus dans le fils rss et à remp lacer par d'autres
    // doit être invoqué avant p arsefile
    // cette fonction est optionnelle  et ne doit être utilisée que pour cert ains fils.
    $avant = array('&#','•');
    $apres = array('|@|','-');
    $rss -> to_replace_with($avant, $ap res);

    // parser le fichier news
    $res = $rss -> parsefile($flux );
    
    if ($res) {
        $encode = $rss  ;-> get_encoding();
        
        // recupération des  données sur le channel
        $channel = $rss&nbs p;-> get_channel();
        
        // affichage site,& nbsp;url, description 
        $content =  '& lt;p  class=\'flux-RSS\'><a href="'. $channel['link'] .'" target="_blank">'. clean_text($channel['title'], $encode) . ' - RSS fead</a></p>';
        
        // nombre d'items&n bsp;
        //$nbnews = $rss&nb sp;-> get_num_items();
        
        // recup array  ;des données 
        $items = $rss  -> get_items();
        
        $content .= '<dl   class=\'flux-RSS\'>';
        for($i = 0; $i  < $nbnews; $i++) { 
            if&nb sp;($affichage == '1') {
              ;   $content .= '<dt>- '.clean_text($items[ $i]['link'], $encode).'</dt>'."\n";  
            }&nbs p;else {
              ;   $content .= '<dt>- <a href="'.$ items[$i]['link'].'" target="_blank">'.clean_text($items[$i]['title'],& nbsp;$encode).'</a></dt>'."\n"; 
            }
        }
        
        $content .= '</d l>';
    } // fin if $rss
return $content;        
}
?>




que j'appelle en mettant dans le bloc



function#lit_RSS
params#' <a href=" <a href="http://www.pedigreedatabase.com/german_shepherd_dog/rss.classified_latest','600','5','1'"" target="_blank" class="noir">http://www.pedigreedatabase.com/german_shepherd_dog/rss.classified_latest','600','5','1'"</a> target="_blank" class="noir"> <a href="http://www.pedigreedatabase.com/german_shepherd_dog/rss.classified_latest','600','5','1'</a>" target="_blank" class="noir">http://www.pedigreedatabase.com/german_shepherd_dog/rss.classified_latest','600','5','1'</a></a>



pour le coup, le bloc ne s'affiche même pas. Pas de message d'erreur

Qu'ai-je commis comme erreur?

Merci de votre aide

Message édité par : PhilGuen / 23-02-2012 14:39


  Profil  E-mail  www  
jpb
2664       
 

jpb
  Posté : 23-02-2012 18:11

yo
comprend pas. dans ta fonction tu as 4 paramètres ... dans le blocs tu en appelles (les paramètres ) une ribambelle ??... ça
risque pas de fonctionner

  Profil  www  
PhilGuen
986      

PhilGuen
  Posté : 23-02-2012 18:54

Citation : jpb 

yo
comprend pas. dans ta fonction tu as 4 paramètres ... dans le blocs tu en appelles (les paramètres ) une ribambelle ??... ça
risque pas de fonctionner 


Non ... ca c'est l'éditeur sur NPDS.org qui merde ... il ajoute tout un tas de balise (dont les liens et target) même à l'intérieur des balises de codes.

j'ai bien 4 paramètres de passés dans l'appel de la focntion.

Message édité par : PhilGuen / 23-02-2012 18:56


  Profil  E-mail  www  
PhilGuen
986      

PhilGuen
  Posté : 24-02-2012 17:59

Bon, j'avance ... et ca fonctionne (presque)en me servant des scripts "fil_le"

Inconvénient de ce que j'ai fait: chaque flux RSS doit être appelé dans un bloc spécifique.

Problème : je n'arrive pas à "récupérer" et donc afficher le titre du bloc.

J'ai essayé avec un global block_title sans succès.

voici mon code sans aucun doute bidouillé et donc perfectible mais au moins ca fonctionne :
je peux enfin avoir TOUS les flux que je souhaite (voir http://guenet.net)



<?php    
// --------------------------------------------------------
// d'après parse_flux-2 pour lire des fichiers& nbsp;RSS/RDF/Atom
// Dominique WOJYLAC < http://wojylac.free.fr>
// Distribué sous GNU General Public License. < br />// 
// Version 2.1c
// ---------------------------------------------------------
// fonction destinée à nettoyer le texte r écupéré
// que l'on pourrait séparer de ce code&nb sp;en la mettant dans un fichier à inclure < br />// fonction destinée à nettoyer le texte r écupéré
// que l'on pourrait séparer de ce code&nb sp;en la mettant dans un fichier à inclure < br />
function clean_text($text$encodage '',$long) {
    if ($encodage == 'utf-8') {
        $text = utf8_decode ($text);
    }
    $avant = array(
        '&lt;',
        '&gt;',
        '&quot;',
        '&amp;',
        '|@|' // pour  traitement correct des caractères spéciaux préalableme nt remplacés (voir plus bas)
        );
    $apres = array(
        '<',
        '>',
        '"',
        '&',
        '&#'
        );
    $text = substr(str_replace($avant, $ap res, $text),0,$long).' ...';
    return $text;
}

function lit_RSS($flux,$delai,$nbnews,$affichage,$long) {
// chemin relatif vers le dossier cache
// le répertoire "cache" doit être autorisé&nbs p;en écriture
// ne pas oublier / à la fin
$dir_cache = './cache/';

// nom du fichier mis en cache
//$file_cache = 'flux.html';
$url_explode = explode('/',$flux); 
$file_cache = ($url_explode[2]).'.html';

if (!is_dir($dir_cache)) {
    exit ('Répertoire cache "'.$dir_cache. '" inexistant !');
}

!include!_once('rss_read.inc.php'); 
$rss = new rss_read();
//$flux = ' http://npds.org/backend.php'; //adresse du flux passée par la fonction.
// voir la doc pour cette fonction
$date_modif = $rss -> get_last_modified($flux);

if ($date_modif > 0) {
    // le serveur distant a reto urné une date de dermière modification
    // on remettra à jour immédi atement en cas de modification postérieure
    // à la date du fichier  ;en cache
    $delai = 0;
}
else {
    // on impose la mise à  jour avec une certaine periodicité
    $date_modif = time();
    // le delai entre deux rafra ichissements en secondes à régler suivant le  ;type de fil ici 2 heures
    //$delai = 600; //délai passé&nbs p;par la fonction
}

// le fichier est-il en cache et suffisamm ent jeune
$file_cache = $dir_cache.$file_cache;
$en_cache = file_exists($file_cache);
if ($en_cache) {
    $en_cache = ($date_modif < fil emtime($file_cache) + $delai);
}

if (!$en_cache) {
    // il est considéré comme n' étant pas en cache on le génére
    $content = '';
    
    // caractères parasites pouvant ê tre contenus dans le fils rss et à remp lacer par d'autres
    // doit être invoqué avant p arsefile
    // cette fonction est optionnelle  et ne doit être utilisée que pour cert ains fils.
    $avant = array('&#','&bull;');
    $apres = array('|@|','-');
    $rss -> to_replace_with($avant, $ap res);

    // parser le fichier news
    $res = $rss -> parsefile($flux );
    
    if ($res) {
        $encode = $rss  ;-> get_encoding();
        
        // recupération des  données sur le channel
        $channel = $rss&nbs p;-> get_channel();
    
        // nombre d'items&n bsp;
        //$nbnews = $rss&nb sp;-> get_num_items(); // nombre de news à&nbs p;afficher passé par la fonction
        
        // recup array  ;des données 
        $items = $rss  -> get_items();
        if ($items) {
            $cont ent .= '<ul>';
            for($ i = 0; $i < $nbnews; $i++) { 
              ;   if ($affichage == '1') {
              ;       $content .= '<li>&nb sp;'.$items[$i]['link'].'</li>'."\n";
              ;   } else {
              ;       $content .= '<li>&nb sp;<a href="'.$items[$i]['link'].'" target="_blank" class="noir">'.clean_text($items[$i]['title'], $encode, $long).'&l t;/a></li>'."\n";
              ;   }
            }
            $cont ent .= '</ul>';
        }
        // affichage site,& nbsp;url, description 
        $content .=  ' <p align = \'right\'><a href="'. $channel['li nk'].'" target="_blank" class="noir"> Lire la suite ...</a></p>';
    } // fin if $rss
    
    $fd = fopen($file_cache, "w");
    fputs($fd, $content);
    fclose($fd);
} else {
        //Ouverture du fich ier en lecture seule
        $handle = fopen($fi le_cache, 'r');
        //Si on a réus si à ouvrir le fichier
        if ($handle)
        {
            $cont ent = '';
            //Tan t que l'on est pas à la fin du fic hier
            while  (!feof($handle))
            {
              ;   //On lit la ligne courante  &n bsp; 
              ;   $content .= fgets($handle);
            }
            //On& nbsp;ferme le fichier
            fclos e($handle);
        } else {
            $cont ent = 'Erreur de lecture du fichier en  cache';
        }
} // fin if !$en_cache
themesidebox($block_title,$content);
} // fin de fonction
?>



  Profil  E-mail  www  
PhilGuen
986      

PhilGuen
  Posté : 24-02-2012 20:38

Sur http://guenet.net j'ai résolu le problème du titre en la passant en paramètre.

Mais si on pouvait trouver mieux !!!

Bien évidement sur FREE ca ne marche toujours pas ... je vais donc transférer tous mes sites sur c-webhosting

  Profil  E-mail  www  
developpeur
24581       
 

developpeur
  Posté : 28-02-2012 21:34

Fait un topic dans futur version SVP / faut que l'on regarde plus avant cette librairie pour remplacer la gestion actuelle qui n'est plus OK

  Profil  E-mail  www  
PhilGuen
986      

PhilGuen
  Posté : 29-02-2012 08:02

ok - j'y vais

  Profil  E-mail  www  
developpeur
24581       
 

developpeur
  Posté : 01-03-2012 22:40

Merci

  Profil  E-mail  www  
Sauter à :

Temps : 0.0169 seconde(s)