[Résolu] Intégration flux RSS (Shaarli)

mr-tocmr-toc Member
septembre 2015 modifié dans Entraide
Bonjour,

J'avais envie d'intégrer Shaarli à mon pluxml parce que je trouve que c'est pas génial d'utiliser des frames.


J'ai un début qui marche plutôt bien (jusqu'à maintenant).


Maintenant , j'ai besoin d'un petit coup de main pour régler des détails.
D'abord, dans le flux xml j'ai un pb au niveau des tags (nommé "category"). Je n'arrive pas à tous les récupérer convenablement.
J'aimerai aussi transformé la date qui ressemble à "Mon, 06 Apr 2015 16:44:59 +0200" à un format du style "09 avril 2015" où quelque chose de plus lisible.
[== PHP ==]
<p>Extrait de mon Shaarli:</p>

<?php 

$html = ""; 
$sum="";
$nb="20";

// lien du flux RSS
$url = "http://shaarli.monsite.com/?do=rss"; 
$xml = simplexml_load_file($url); 
for($i = 0; $i < $nb; $i++){

$title = $xml->channel->item[$i]->title; 
$guid = $xml->channel->item[$i]->guid; 
$link = $xml->channel->item[$i]->link; 
$pubDate = $xml->channel->item[$i]->pubDate; 
$description = $xml->channel->item[$i]->description; 
$category = $xml->channel->item[$i]->category; 

$html .= "<article><header><a id=\"$i\" href='$link'><h1>$title</h1></a></header>"; 
$html .= "<section><p>$description</p></section>";
$html .= "<footer><p>$pubDate<br />"; 
$html .= "Mots clés : $category</p></footer></article>"; 

$sum.="<li><a href=\"#$i\">$title</a></li>";


// suppression du permalink Shaarli
$html = str_replace("(<a href=\"$guid\">Permalink</a>)", "",  $html);

} 
echo "<div class=\"sommaire\"><p>Sommaire:</p><ol>$sum</ol></div><br />";


echo $html; 

?>

[== XML ==]

<item>
	<title>wallabag - Hidden options</title>
	<guid isPermaLink="false">https://monsite.com/?aZ2I7w</guid>
	<link>http://doc.wallabag.org/en/Administrator/hidden_options.html</link>
	<pubDate>Thu, 09 Apr 2015 04:11:10 +0200</pubDate>
<category domain="https://shaarli.monsite.com/">Sécurité</category>
<category domain="https://shaarli.monsite.com/">Banque</category>


<description><![CDATA[test<br>(<a href="https://shaarli.monsite.com/?aZ2I7w">Permalink</a>)]]></description>
</item>

Réponses

  • on m'a donné un début de solution pour la date.
    [== PHP ==]
    $pubDate = strftime("%Y-%m-%d %H:%M:%S", strtotime($pubDate));
    

    Pour les catégories, ça peut encore intéressé quelqu'un mais ça ne semble pas être dans les standard du RSS.
  • Si quelqu'un veut afficher un flux RSS dans PluXml, il suffit de copier le code
    [== PHP ==]
    
    <?php 
    
    // nb d'article à lire sur le flux
    $nb="15";
    // lien du flux RSS
    $url= "http://monsite.com/flux-rss";
    
    setlocale (LC_TIME, 'fr_FR.utf8','fra'); 
    
    $html=""; 
    $sum="";
    
    $xml = simplexml_load_file($url); 
    for($i = 0; $i < $nb; $i++){
    
    $title = $xml->channel->item[$i]->title; 
    $guid = $xml->channel->item[$i]->guid; 
    $link = $xml->channel->item[$i]->link; 
    if (strlen($link) > 100 ) {$shortlink=  substr($link, 0, 70)." .... ".substr($link, -30, 30) ; } else { $shortlink = $link; }
    $pubDate = $xml->channel->item[$i]->pubDate; 
    $Date = strftime("%d %B %Y", strtotime($pubDate));
    $description = $xml->channel->item[$i]->description; 
    
    // si le flux contient moins de $nb artciles
    if (isset($title)) {
    $html .= "<article><header><h1>$title</h1></header>"; 
    $html .= "<section>$Date - <a id=\"$i\" href='$link'>$shortlink</a>"; 
    $html .= "<p>$description</p></section>";
    $html .= "</article><hr />"; 
    $sum.="<li><a href=\"#$i\">$title</a></li>";
    }
    
    } 
    
    echo "<div class=\"sommaire\"> Sommaire: <ol>$sum</ol></div><br />";
    echo "<div class=\"feed\">$html</div>"; 
    
    ?>
    
  • cpalocpalo Member
    Bonjour,

    Pour l'integration d'un flux rss pas de problème. Cela fonctionne à merveille.
    Mais je voudrais intégrer le flux d'une page facebook.. et là rien ne s'affiche.
    J'ai seulement modifié:
    $url= "https://www.facebook.com/feeds/page.php?format=rss20&id=1403011963308164"
    Est-ce que je devais faire d'autres modifs car rien ne s'affiche
Connectez-vous ou Inscrivez-vous pour répondre.