flux rss : partager image avec billet
Hors ligneLuchenri Le 15/07/2014 à 14:03 Profil de Luchenri Configuration de Luchenri

Bonjour,

j'ai un flux rss qui marche bien en l'état sur un site MAIS  je souhaiterais que celui-ci récupère l'image accompagnant le billet lors de son partage sur réseaux sociaux ce qui n'est pas le cas pour le moment.

On m'a dit que createTextNode n'allait pas pour récupérer l'image dans la partie du script que je vous joins ci-dessous. J'ai essayé createAttribute ou document.creteElementById mais j'ai aussi des erreurs malgré avoir cherché sur le Net. 

Pourriez vous m'aider à trouver, puisque je suis sur un site de vulgarisation informatique, ce qu'il faut que je mette dans l'extrait du script suivant pour que l'image soit récupérée par mon flux rss. Merci pour votre aide.

$image = $parent->createElement("image");
$image = $item->appendChild($image);
$text_image = $parent->createAttribute($image);
$text_image = $image->appendChild($text_image);

$url = $parent->createElement("url");
$url = $item->appendChild($url);
$text_url = $parent->createTextNode("http://www.site.com/controleur/commentaire/index.php?billets=$id_billet");
$text_url = $link->appendChild($text_url);

Hors ligneAnthony Le 15/07/2014 à 17:25 Profil de Anthony Configuration de Anthony

Fou du volant

Salut Heureux

Je ne comprends pas bien ta question. Une image est totalement différente d'un flux RSS, un flux RSS est purement textuel. Il s'agit de données XML. 

Lorsque tu partages une page sur un réseau social, tu passes par une URL de partage qui détecte elle-même les images (normalement) et te propose de les ajouter sous forme de vignettes.

Je vois que tu as posté du PHP. Que souhaites-tu faire exactement ? 

--

Hors ligneLuchenri Le 15/07/2014 à 18:07 Profil de Luchenri Configuration de Luchenri

Bonsoir Anthony,

Merci pour ta réponse. Jusqu'à une certaine date les images accompagnaient automatiquement mes billets sur les réseaux sociaux. Puis j'ai refais le site et là les images n'accompagnaient plus le flux rss.

On m'a alors dit qu'il fallait que mon code contienne une variable image d'où ma question.et l'extrait du code que j'avais posté auparavant sans que d'aucuns jusqu'à ce jour ne me réponde comme tu l'as fait..

Voici le code de mon flux rss qui fonctionne bien en l'état mais qui maintenant ne partage plus les images accompagnant les billets automatiquement via dlvr.it.

Code pour flux rss ( qui fonctionne correctement et transmet bien mes titres et mes résumés lors des partages mais sans les images )

<?php

function &init_news_rss(&$xml_file)
{
$root = $xml_file->createElement("rss"); // création de l'élément
$root->setAttribute("version", "2.0"); // on lui ajoute un attribut
$root = $xml_file->appendChild($root); // on l'insère dans le nœud parent (ici root, qui est "rss")

$channel = $xml_file->createElement("channel");
$channel = $root->appendChild($channel);

$desc = $xml_file->createElement("description");
$desc = $channel->appendChild($desc);
$text_desc = $xml_file->createTextNode("a savoir."); // on insère du texte entre les balises <description></description>
$text_desc = $desc->appendChild($text_desc);

$link = $xml_file->createElement("link");
$link = $channel->appendChild($link);
$text_link = $xml_file->createTextNode("http://www.site.com");
$text_link = $link->appendChild($text_link);

$title = $xml_file->createElement("title");
$title = $channel->appendChild($title);
$text_title = $xml_file->createTextNode("site.com");
$text_title = $title->appendChild($text_title);


return $channel;
}

function add_news_node(&$parent, $root, $id_billet, $auteur, $titre, $resume, $image, $date)
{
$item = $parent->createElement("item");
$item = $root->appendChild($item);

$title = $parent->createElement("title");
$title = $item->appendChild($title);
$text_title = $parent->createTextNode($titre);
$text_title = $title->appendChild($text_title);

$link = $parent->createElement("link");
$link = $item->appendChild($link);
$text_link = $parent->createTextNode("http://www.site.com/controleur/commentaire/index.php?billets=$id_billet");
$text_link = $link->appendChild($text_link);

$desc = $parent->createElement("description");
$desc = $item->appendChild($desc);
$text_desc = $parent->createTextNode($resume);
$text_desc = $desc->appendChild($text_desc);

$com = $parent->createElement("comments");
$com = $item->appendChild($com);
$text_com = $parent->createTextNode("http://www.site.com/controleur/commentaire/index.php?billets=$id_billet");
$text_com = $com->appendChild($text_com);

$author = $parent->createElement("author");
$author = $item->appendChild($author);
$text_author = $parent->createTextNode($auteur);
$text_author = $author->appendChild($text_author);

 $pubdate = $parent->createElement("pubDate");
$pubdate = $item->appendChild($pubdate);
$text_date = $parent->createTextNode($date);
$text_date = $pubdate->appendChild($text_date);

$guid = $parent->createElement("guid");
$guid = $item->appendChild($guid);
$text_guid = $parent->createTextNode("http://www.site.com/controleur/commentaire/index.php?billets=$id_billet");
$text_guid = $guid->appendChild($text_guid);

$src = $parent->createElement("source");
$src = $item->appendChild($src);
$text_src = $parent->createTextNode("http://www.site.com");
$text_src = $src->appendChild($text_src);
}


function rebuild_rss()
{
// on se connecte à la BDD

try
{
$bdd= new PDO('mysql:host=localhost;dbname=ddb','etc','pw');
$bdd->exec('SET NAMES utf8');
}
catch(Exception $e)
{
die ('Erreur:'.$e->getMessage());
}


$req = $bdd->query('SELECT id_billet, titre1, resume,image1, auteur,DATE_FORMAT(date_de_creation,\'%d/%m/%Y à %Hh%imin%ss\') AS date_de_creation_fr FROM billets ORDER BY date_de_creation DESC LIMIT 0,20');


// on crée le fichier XML
$xml_file = new DOMDocument("1.0");


$channel = init_news_rss($xml_file);


// on ajoute chaque news au fichier RSS
while( $donnees = $req->fetch() )
{
add_news_node ($xml_file, $channel, $donnees["id_billet"], $donnees["auteur"],
$donnees["titre1"], $donnees["resume"],$donnees["image1"],
$donnees["date_de_creation"]);
}

// on écrit le fichier
$xml_file->save("rss.xml");
}

rebuild_rss();

?>

Si comme tu dis ce flux repère automatiquement mes images, comment se fait-il qu'à présent il ne le détecte plus. Merci pour ton aide et à bientôt.

Hors ligneAnthony Le 15/07/2014 à 18:57 Profil de Anthony Configuration de Anthony

Fou du volant

Je ne vois pas de référence à ta variable $image dans les fonctions que tu viens de poster. Elle n'est que dans le prototype de la fonction et nulle par ailleurs. 

Ensuite, en regardant l' API de dlvr.it, notamment la partie d'upload d'image, il y a un encodage à respecter : requires POST w/ multipart encoding).

Etant donné que tu passes du XML, je ne saisis pas bien trop leur intérêt d'avoir fait ça ... Bref tu peux essayer de transmettre ce contenu pour l'image encodée :

$image_encodee = chunk_split(base64_encode(file_get_contents('tonimage.png')));

Il n'est pas fait mention de code XML dans l'API dlvr.it (API que je trouve très très succinte ...).

--

Hors ligneLuchenri Le 16/07/2014 à 09:41 Profil de Luchenri Configuration de Luchenri

Bonjour Anthony,

Merci de t'intéresser à mon post.

J'avais enlevé les références $image dans mon code car j'avais des messages d'erreur.

Je suis entre temps allé sur le web pour chercher des informations et tenter de résoudre mon souci. On peut récupérer des images pour les joindre au flux rss comme l'explique ce lien blog cozig ou encore ce lien w3school.com.

Pour ce faire j'ai rajouté ce morceau de code à mon script :

morceau de code rajouté

$enclosure = $parent->createElement("enclosure");
$enclosure = $item->appendChild($enclosure);
$text_enclosure = $parent->createTextNode($image);
$text_enclosure = $image->appendChild($text_enclosure);

$url = $parent->createElement("url");
$url = $item->appendChild($url);
$text_url = $parent->createTextNode("http://www.site.com/repertoire/img.jpg");
$text_url = $url->appendChild($text_url);



Mais bien que rien n'affecte à présent mon code général du flux rss il n'y a toujours aucune image accompagnant mon flux. J'ai regardé dlvr.it cela ne vient pas de lui. Vu que tu sembles t'y connaître et que personne sur les autres sites n'ont réellement cherché à m'aider pourrais-tu m'aider s'il te plaît. merci par avance.

Voici maintenant mon code général avec le morceau rajouté :

createElement("rss"); // création de l'élément
        $root->setAttribute("version", "2.0"); // on lui ajoute un attribut
        $root = $xml_file->appendChild($root); // on l'insère dans le nœud parent (ici root, qui est "rss")
        
        $channel = $xml_file->createElement("channel");
        $channel = $root->appendChild($channel);
                
        $desc = $xml_file->createElement("description");
        $desc = $channel->appendChild($desc);
        $text_desc = $xml_file->createTextNode("ce qu'il faut savoir."); // on insère du texte entre les balises 
        $text_desc = $desc->appendChild($text_desc);
        
        $link = $xml_file->createElement("link");
        $link = $channel->appendChild($link);
        $text_link = $xml_file->createTextNode("http://www.site.com/controleur/commentaire/index.p...;
        $text_link = $link->appendChild($text_link);
  
  $enclosure = $parent->createElement("enclosure");
        $enclosure = $item->appendChild($enclosure);
        $text_enclosure = $parent->createTextNode($image);
        $text_enclosure = $image->appendChild($text_enclosure);
  
  $url = $parent->createElement("url");
        $url = $item->appendChild($url);
        $text_url = $parent->createTextNode("$image");
        $text_url = $urlk->appendChild($text_url);
  
  
        
        $desc = $parent->createElement("description");
        $desc = $item->appendChild($desc);
        $text_desc = $parent->createTextNode($resume);
        $text_desc = $desc->appendChild($text_desc);
        
        $com = $parent->createElement("comments");
        $com = $item->appendChild($com);
        $text_com = $parent->createTextNode("http://www.site.com/controleur/commentaire/index.p...">http://www.site.com/controleur/commentaire/index.p...         $text_com = $com->appendChild($text_com);
        
        $author = $parent->createElement("author");
        $author = $item->appendChild($author);
        $text_author = $parent->createTextNode($auteur);
        $text_author = $author->appendChild($text_author);
        
        $pubdate = $parent->createElement("pubDate");
        $pubdate = $item->appendChild($pubdate);
        $text_date = $parent->createTextNode($date);
        $text_date = $pubdate->appendChild($text_date);
        
        $guid = $parent->createElement("guid");
        $guid = $item->appendChild($guid);
        $text_guid = $parent->createTextNode("
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels