paramétrer magpierss

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


lo2b
WRInaute impliqué
WRInaute impliqué
 
Messages: 498
Inscription: Jeu Jan 25, 2007 15:58

paramétrer magpierss

Message le Lun Sep 17, 2007 23:54

bonjour, me voilà obligé de m'aventurer dans le monde (obscur) du php pour intégrer des flux RSS sur un site.
pas de pb pour utiliser magpierss, avec le script suivant que j'ai récupéré :

Code: Tout sélectionner
<?php
// on inclut la classe magpierss
require_once("magpierss/rss_fetch.inc");

// la fonction FeedParser() va extraire le contenu pour l'afficher
// elle prend en paramètre $url_feed, l'url du flux RSS et $nb_items_affiches, le nombre d'éléments (items) à afficher
function FeedParser($url_feed, $nb_items_affiches) {

    // lecture du fichier distant (flux XML)
    $rss = fetch_rss($url_feed);

    // si le parcours du fichier se passe bien, on lit les élements (items)
    if (is_array($rss->items))  {

        // on ne garde que les $nb_items_affiches premiers éléments (items), nombre défini dans l'en-tête de la fonction
        $items = array_slice($rss->items, 0, $nb_items_affiches);

        // on peut récupérer les informations sur le site proposant le flux (optionnel)
        $site_titre = $rss->channel["title"]; // titre du site
        $site_lien = $rss->channel["link"]; // lien du site
        $site_description = $rss->channel["description"]; // description du site   
        // à présent on stocke les données dans $html, variable à afficher

        // titre sous forme de lien
        $html .= "<a href=\"$site_lien\" title=\"$site_description\" target=\"_blank\">$site_titre</a><br />\n";

        // on affiche la description du site proposant le flux
        $html .= "<span>$site_description</span><br clear=\"left\" target=\"_blank\"><br />\n"; // le clear="left" renvoie à la ligne même s'il y a une image

        // on fait une boucle sur les informations : pour chaque item, récupérer $titre... et afficher
        foreach($items as $item) {

            // on mémorise les informations de chaque item dans des variables
            $titre = $item["title"];
            $lien = $item["link"];
            $description = $item["description"];
           

            // la date utilisée pour les flux RSS est au format timestamp, il faut donc formater la date
            // conversion au format jj/mm/aa. pour plus d'informations, vous conférer au tutorial sur les timestamp
            $date = date("d/m/y",strtotime($item["pubdate"]));         

            // on affiche le titre de chaque item
            $html .= "<a href=\"".$lien."\" title=\"".$titre."\" target=\"_blank\">".$titre."</a><br>\n";

            // puis la date et la description
            $html .= "<span>$date - $description</span><br clear=\"left\"><br />\n";
        } // fin de la boucle

        // on retourne la variable $html au programme (elle contient le code HTML pour l'affichage du flux)
        return $html;
    } // fin du traitement du fichier
} // fin de la fonction FeedParser()
?>


voilà mes trois questions :

1. comment faire pour n'afficher que les titres du flux syndiqué ?
2. comment faire pour ne pas afficher les images ?
3. comment faire pour syndiquer plusieurs flux ensemble ?

après avoir longement cherché sur Google, je n'ai pas trouvé de tuto expliquant toutes les fonctions paramétrables de magpierss...


bee_human
WRInaute accro
WRInaute accro
 
Messages: 2026
Inscription: Jeu Juin 16, 2005 19:51

Message le Mar Sep 18, 2007 6:48

Pour 1 c'est simple: tu retire cela:
// puis la date et la description
$html .= "<span>$date - $description</span><br clear=\"left\"><br />\n";

si tu veux garder la date il faut que tu modifies la ligne du dessus pour que la date soit devant ton titre.

Pour 2, si la description contient des images, les images s'afficheront à partir du moment où tu afficheras la description. Pour retirer que les images sans retirer la description, il faut que tu réinterprètes complétement le champ description pour éliminer toutes les balises img avec ceux qui les ferment et ceux qui ne les ferment pas. Avec ceux qui éventuellement utilisent l'image comme lien etc...

Pour le 3, il faut également réécrire le code php pour n'afficher la variable $html qu'une fois que tus l'a rempli avec l'ensemble des flux dans l'ordre que tu souhaites (en passant par un tableau intermédiaire qui te permettra le tri)


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Message le Mar Sep 18, 2007 8:45

Pour la 2, sa ne serait pas plus simple de reduire les images à 1px par css plutot que de ce casser la tete à revoir le code ?


lo2b
WRInaute impliqué
WRInaute impliqué
 
Messages: 498
Inscription: Jeu Jan 25, 2007 15:58

Message le Mar Sep 18, 2007 9:49

merci. j'ai modifié le code pour obtenir l'affichage minimal que je cherchais :
date - titre

Code: Tout sélectionner
<?php
// on inclut la classe magpierss
require_once("magpierss/rss_fetch.inc");

// la fonction FeedParser() va extraire le contenu pour l'afficher
// elle prend en paramètre $url_feed, l'url du flux RSS et $nb_items_affiches, le nombre d'éléments (items) à afficher
function FeedParser($url_feed, $nb_items_affiches) {

    // lecture du fichier distant (flux XML)
    $rss = fetch_rss($url_feed);

    // si le parcours du fichier se passe bien, on lit les élements (items)
    if (is_array($rss->items))  {

        // on ne garde que les $nb_items_affiches premiers éléments (items), nombre défini dans l'en-tête de la fonction
        $items = array_slice($rss->items, 0, $nb_items_affiches);

        // à présent on stocke les données dans $html, variable à afficher

        // on fait une boucle sur les informations : pour chaque item, récupérer $titre... et afficher
        foreach($items as $item) {

            // on mémorise les informations de chaque item dans des variables
            $titre = $item["title"];
            $lien = $item["link"];           

            // la date utilisée pour les flux RSS est au format timestamp, il faut donc formater la date
            // conversion au format jj/mm/aa. pour plus d'informations, vous conférer au tutorial sur les timestamp
            $date = date("d/m/y",strtotime($item["pubdate"]));

            // on affiche la date
            $html .= "<span>$date </span>\n";

            // puis le titre de chaque item
            $html .= "<a href=\"".$lien."\" title=\"".$titre."\" target=\"_blank\">".$titre."</a><br>\n";

        } // fin de la boucle

        // on retourne la variable $html au programme (elle contient le code HTML pour l'affichage du flux)
        return $html;
    } // fin du traitement du fichier
} // fin de la fonction FeedParser()
?>


pour ma 2e question, de toute façon je n'affiche que le titre, donc pas de pb d'image...
pour ma 3e question, ce sera pour quand je serai plus grand :mrgreen:


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Message le Mar Sep 18, 2007 10:25

Dans ta page qui affiche ton flux rss, tu fais:
Code: Tout sélectionner
<?
$rss= ("http://monflux1/rss.xml") ;
$rss1= ("http://monflux2/rss.xml") ;
?>

Et dans l'appel du flux rss:
Code: Tout sélectionner
<?php
require_once("feedparser.php");
echo
FeedParser("$rss" ,10) ;
echo
FeedParser("$rss1" ,10) ;
?>

Normalement sa t'affiche tes 2 flux :wink: .


lo2b
WRInaute impliqué
WRInaute impliqué
 
Messages: 498
Inscription: Jeu Jan 25, 2007 15:58

Message le Mar Sep 18, 2007 12:07

merci ! ...Mais je dois m'être trompé quelque part...

feedparser.php
Code: Tout sélectionner
<?php
// on inclut la classe magpierss
require_once("magpierss/rss_fetch.inc");

// la fonction FeedParser() va extraire le contenu pour l'afficher
// elle prend en paramètre $url_feed, l'url du flux RSS et $nb_items_affiches, le nombre d'éléments (items) à afficher
function FeedParser($url_feed, $nb_items_affiches) {

    // lecture du fichier distant (flux XML)
    $rss = fetch_rss($url_feed);

    // si le parcours du fichier se passe bien, on lit les élements (items)
    if (is_array($rss->items))  {

        // on ne garde que les $nb_items_affiches premiers éléments (items), nombre défini dans l'en-tête de la fonction
        $items = array_slice($rss->items, 0, $nb_items_affiches);

        // à présent on stocke les données dans $html, variable à afficher

        // on fait une boucle sur les informations : pour chaque item, récupérer $titre... et afficher
        foreach($items as $item) {

            // on mémorise les informations de chaque item dans des variables
            $titre = $item["title"];
            $lien = $item["link"];           

            // la date utilisée pour les flux RSS est au format timestamp, il faut donc formater la date
            // conversion au format jj/mm/aa. pour plus d'informations, vous conférer au tutorial sur les timestamp
            $date = date("d/m/y",strtotime($item["pubdate"]));

            // on affiche la date
            $html .= "<span>$date </span>\n";

            // puis le titre de chaque item
            $html .= "<a href=\"".$lien."\" title=\"".$titre."\" target=\"_blank\">".$titre."</a><br>\n";

        } // fin de la boucle

        // on retourne la variable $html au programme (elle contient le code HTML pour l'affichage du flux)
        return $html;
    } // fin du traitement du fichier
} // fin de la fonction FeedParser()
?>


un-seul-flux-rss.php
Code: Tout sélectionner
<html>

<head>
<meta http-equiv="Content-Language" content="fr">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Nouvelle page 1</title>
</head>

<body>

<?  $rss= ("http://tempsreel.nouvelobs.com/file/rss_perm/rss_permanent_politique.xml") ;  $rss1= ("http://www.lemonde.fr/rss/sequence/0,2-3224,1-0,0.xml") ;  ?>

<?php
require_once("feedparser.php");
echo
FeedParser("$rss" ,20) ;
echo
FeedParser("$rss1" ,20) ;
?>

</body>

</html>


voilà ce que cela donne (sans mise en page...) :
-http://annuaire.politique.free.fr/un-seul-flux-rss.php
bref, les deux flux se succèdent mais ne se mélangent pas chronologiquement...

(je vais alors peut-être me contenter de
-http://annuaire.politique.free.fr/plusieurs-flux-rss.php)


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Re: paramétrer magpierss

Message le Mar Sep 18, 2007 14:06

Non, c'est bien sa.
lo2b a écrit:3. comment faire pour syndiquer plusieurs flux ensemble ?

Ta jamais dit qu'ils devaient se mélanger ^^ !


lo2b
WRInaute impliqué
WRInaute impliqué
 
Messages: 498
Inscription: Jeu Jan 25, 2007 15:58

Message le Mar Sep 18, 2007 14:14

:roll:
merci quand même...


bee_human
WRInaute accro
WRInaute accro
 
Messages: 2026
Inscription: Jeu Juin 16, 2005 19:51

Re: paramétrer magpierss

Message le Mar Sep 18, 2007 15:51

tryan a écrit:Non, c'est bien sa.
lo2b a écrit:3. comment faire pour syndiquer plusieurs flux ensemble ?

Ta jamais dit qu'ils devaient se mélanger ^^ !


Généralement quand on veut parser 2 flux ensemble, c'est pour les mélanger. C'est pour cette raison que j'ai suggéré le passage par un tableau intermédiaire pour le trier ensuite suivant ses propres critères: date ou ordre alphabétique du titre par exemple.


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Message le Mar Sep 18, 2007 17:07

Oki, moi je suis bete et discipliné :lol: , si c'est pas marqué texto que c'est pour les mélanger, je ne peux pas le savoir.
Ceci dit, aurrais-tu un exemple sous la main, un tuto à suivre ou je ne sais quoi ?


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités