website logo
Auteur
avatar
PhilGuen

Forum » » Le coin des codeurs » » mettre un fil RSS dans un bloc


Posté : 23-02-2012 14:30 icone du post

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  RSS/RDF/Atom
// Dominique WOJYLAC < <a href=" <a&nb sp;href="http://wojylac.free.fr>"" target="_blank" class="noir"> ;http://wojylac.free.fr>"</a> target="_blank" class="noir"&g t; <a href="http://wojylac.free.fr></a>" target="_bl ank" class="noir">http://wojylac.free.fr></a></a>
// Distribué sous GNU General Public License.
// 
// Version 2.1c
// ---------------------------------------------------------
// fonction destinée à nettoyer le texte  ;récupéré
// que l'on pourrait séparer de ce code&n bsp;en la mettant dans un fichier à inclure
function clean_text($text$encodage '') {
    if ($encodage == 'utf-8') {
        $text = utf8_decode ($text);
    }
    $avant = array(
        '<',
        '>',
        '"',
        '&',
        '|@|' // pour  traitement correct des caractères spéciaux préalabl ement 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 à r emplacer par d'autres
    // doit être invoqué avant  ;parsefile
    // cette fonction est optionnelle  et ne doit être utilisée que pour ce rtains 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 de s 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'].'"&n bsp;target="_blank">'. clean_text($channel['title'], $encode).&nbs p;' - 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.pedigreedata base.com/german_shepherd_dog/rss.classified_latest','600','5','1');"</a>& nbsp;target="_blank" class="noir"> <a href="http://www.ped igreedatabase.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& gt; 
//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("./modul es/fil_le/lecteurRSS.php");



et modifié le code comme suit



<?php
// --------------------------------------------------------
// d'après parse_flux-2 pour lire des fichiers  RSS/RDF/Atom
// Dominique WOJYLAC < <a href=" <a&nb sp;href="http://wojylac.free.fr>"" target="_blank" class="noir"> ;http://wojylac.free.fr>"</a> target="_blank" class="noir"&g t; <a href="http://wojylac.free.fr></a>" target="_bl ank" class="noir">http://wojylac.free.fr></a></a>
// Distribué sous GNU General Public License.
// 
// Version 2.1c
// ---------------------------------------------------------
// fonction destinée à nettoyer le texte  ;récupéré
// que l'on pourrait séparer de ce code&n bsp;en la mettant dans un fichier à inclure
function clean_text($text$encodage '') {
    if ($encodage == 'utf-8') {
        $text = utf8_decode ($text);
    }
    $avant = array(
        '<',
        '>',
        '"',
        '&',
        '|@|' // pour  traitement correct des caractères spéciaux préalabl ement 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 à r emplacer par d'autres
    // doit être invoqué avant  ;parsefile
    // cette fonction est optionnelle  et ne doit être utilisée que pour ce rtains 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 de s 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).& nbsp;' - 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.pedigreedata base.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" c lass="noir"> <a href="http://www.pedigreedatabase.com/german_sh epherd_dog/rss.classified_latest','600','5','1'</a>" target="_blank"  class="noir">http://www.pedigreedatabase.com/german_shepherd_dog/rss.c lassified_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


Cet article provient de NPDS REvolution 16
https://lab.grottes-et-karsts-de-chine.org/viewtopic.php?topic=25384&forum=5