Flux RSS commentaires

Yop tout le monde !

Juste une idée comme ça que je balance vu que le développement a repris son cours : un flux RSS pour suivre les derniers commentaores.

A moins que des volontaires veuillent bien m'expliquer comment faire, c'est un peu le même système qu'avec la notification par mails ?

TCho, Hamtaro.

Réponses

  • Salut,
    je pense que c'est possible mais assez compliqué à faire, parce qu'il y a plusieurs fichiers com qui contiennent eux-mêmes plusieurs commentaires :/. J'y travaille actuellement et j'dois dire que c'est assez casse tête :( (pour le moment j'ai un tableau de tout les commentaires).
  • Salut,

    Tiens en passant je profite du topic.

    Comment intégrer les images dans le flux rss des articles ? Car le texte est en bloc sans retour à a ligne et il n'y a pas les images dans le flux.
  • DitiDiti Member
    Hum, c'est vrai que ça pourrait être amélioré, je vais en parler à Skyline dès que je peux (à moins qu'il vienne ici).
  • fightsoulfightsoul Member
    avril 2008 modifié
    Salut,
    pour avoir le formatage html il faut virer le strip_tags de la balise description.
    Pour ce qui est du flux des commentaires j'ai réussi à faire quelque chose, j'le met ici (je l'est testé sur 2 sites, pour moi ça marche), n'hésitez pas à faire des retours :
    <?php
    header('Content-Type: text/xml; charset=iso-8859-1');
    
    define('PLX_DOC', '');
    define('PLX_CONF', 'conf/configuration.xml');
    
    require_once PLX_DOC.'lib/class.pluxml.php';
    require_once PLX_DOC.'lib/class.glob.php';
    require_once PLX_DOC.'lib/class.recordset.php';
    require_once PLX_DOC.'lib/lib.util.php';
    require_once PLX_DOC.'lib/functions.php';
    
    
    $pluxml = new pluxml(PLX_CONF);
    $pluxml->getMode();
    
    if($pluxml->aCats && $pluxml->aFiles){
    	$pluxml->getUsedCategories();
    	$pluxml->pagination();
    	$pluxml->getFiles();
    	$pluxml->getArticles();
    }
    
    $aComs = $pluxml->ccon->query('#^com.[0-9]{4}.xml$#'); //Table des chemins des fichiers commentaires 
    $xmlCom = PLX_DOC.$pluxml->config['racine_xmlcom']; //Chemin du dossier xmlcom
    $num = array(); //Table des numéro des commentaire pour les faire correspondre avec les articles
    $com = array(); //Tables des articles parsés
    $size = array(); //Tables du nombres d'articles dans chaque table $com
    $new_aComs = array(); //Tables de tous les commentaires par date
    $time = array(); //Table des dates afin de les classés et donc de classé $new_aComs par date
    $i = -1; //Initialisation de $i
    $l = -1; //Initialisation de $l
    foreach($aComs as $Coms){
    	$com[] = $pluxml->parseComments($xmlCom.$Coms);
    	$size[] = count($com[$i+1]);
    	for($k=0; $k<$size[$i+1]; $k++){
    		$num[] = substr($Coms, 4, 4);
    	}
    	$i++;
    }
    foreach($size as $root => $node){
    	for($j=0; $j<$node; $j++){
    		$new_aComs[$com[$root][$j]['date']]['author'] = $com[$root][$j]['author'];
    		$new_aComs[$com[$root][$j]['date']]['date'] = $com[$root][$j]['date'];
    		$new_aComs[$com[$root][$j]['date']]['ip'] = $com[$root][$j]['ip'];
    		$new_aComs[$com[$root][$j]['date']]['mail'] = $com[$root][$j]['mail'];
    		$new_aComs[$com[$root][$j]['date']]['site'] = $com[$root][$j]['site'];
    		$new_aComs[$com[$root][$j]['date']]['content'] = $com[$root][$j]['content'];
    		foreach($pluxml->aFiles as $file){
    			if(preg_match('/'.$num[$l+1].'.([0-9]{3}|home|page)(.([a-z0-9-]*))*.xml$/',$file,$capture)){
    				$n = $num[$l+1]+0;
    				$new_aComs[$com[$root][$j]['date']]['link'] = '?'.$n.'-'.$capture[3];
    				$new_aComs[$com[$root][$j]['date']]['title'] = str_replace('-', ' ', $capture[3]);
    			}
    		}
    		$time[] = $com[$root][$j]['date'];
    		$l++;
    	}
    }
    rsort($time); //Classement du plus récent au plus vieux
    $time = array_slice($time, 0, $pluxml->config['bypage_rss']); // Ne prend que les X derniers commentaires (X étant choisis dans l'administration du flux rss)
    
    echo '<?xml version="1.0" encoding="ISO-8859-1" ?>';
    ?>
    
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    	xmlns:dc="http://purl.org/dc/elements/1.1/"
    	xmlns="http://purl.org/rss/1.0/">
    
    <channel rdf:about="<?php echo $pluxml->config['racine']; ?>">
    	<title><?php __('maintitle'); ?> - Commentaires</title>
    	<link><?php echo $pluxml->config['racine']; ?></link>
    	<description><?php __('subtitle'); ?></description>
    	<dc:language>fr</dc:language>
    	
    	<items>
    		<rdf:Seq>
    <?php
    foreach($time as $item){
    	echo "\t\t\t".'<rdf:li rdf:resource="'.$pluxml->config['racine'].$new_aComs[$item]['link'].'"/>'."\n";
    }
    ?>
    		</rdf:Seq>
    	</items>
    </channel>
    <?php
    foreach($time as $item){
      echo '
      <item rdf:about="'.$pluxml->config['racine'].$new_aComs[$item]['link'].'">
    	<title>Commentaire dans '.$new_aComs[$item]['title'].'</title> 
    	<link>'.$pluxml->config['racine'].$new_aComs[$item]['link'].'</link> 
    	<dc:date>'.$new_aComs[$item]['date'].'</dc:date>
    	<dc:creator>'.$new_aComs[$item]['author'].'</dc:creator>
    	<description><![CDATA['.$new_aComs[$item]['content'].']]></description> 
      </item>';
    }
    ?>
    
    </rdf:RDF>
    
  • Comment tu fais pour le mettre en place ?
  • Salut,
    le fichier créer un flux rss, donc tu le nomme rsscom.php par exemple, tu le met au même endroit que les autres flux (rss et atom) et ensuite y suffis d'entrée l'adresse dans ton navigateur (exemple : http://www.tonsite.fr/core/rsscom.php).
  • Merci je vais tester ça cette après midi ^^

    TCho, Hamtaro.
  • HamtaroHamtaro Member
    avril 2008 modifié
    Je l'ai installé, il s'est bien mis en place mais pour le moment, il me met des vieux (très vieux) commentaires :

    http://www.customtaro.fr/blog/core/rsscom.php

    ET ça serait possible de rajouter dans le flux de quelle personne il s'agit lors du commentaire ?

    Merci pour ton aide ;)

    TCho, Hamtaro.

    Edit : et pour faire varier le nombre de coms dans le flux ?
  • fightsoulfightsoul Member
    avril 2008 modifié
    Salut,
    je viens de modifier le code de mon post (ici), je pense que le fait que le flux n'afficher que des vieux commentaires était parce que j'avais mis des options en plus dans le tableau $aComs (ça ne prenais que les x premier fichier commentaire crée) et j'ai ajouté une ligne pour afficher les x derniers articles, voilà dit moi si ça marche ;).

    PS : avec beaucoup de commentaires ça ne m'étonnerai pas que ça dépasse le temps de réponse du serveur étant donné que ça parse tout les fichiers commentaire :/.
  • Cela semble marcher ;)

    Tu crois pouvoir maintenant rajouter un "champs" avec le nom de l'auteur ?
    ET est-il possible, un peu comme pour la liste des derniers articles, de mettre les derniers commentaires en sidebar mais en résumé, histoire que ça prenne pas trop de place ?

    Merci pour ton aide précieuse ;)

    TCho, Hamtaro
  • fightsoulfightsoul Member
    avril 2008 modifié
    Salut,
    l'auteur du commentaire est inscrit dans la balise dc:creator, mais si tu veux tu peux remplacer la balise description par ça <description><![CDATA.'<p>Par : '.$new_aComs[$item].'</p>]]></description>

    PS : C'est possible de faire un module des derniers articles mais ça risque de ralentir considérablement l'affichage du site (surtout avec ton site où il y a beaucoup de commentaire).
  • J'ai testé ta ligne de description.
    Mais là, l'affichage rame à mort... Telle ment qu'il me propose de télécharger mon fichier rss.php au lieu de l'afficher...

    Ca va être tout le temps comme ça ?
    Ya moyen d'alléger ?

    TCho, Hamtaro.
  • Re,
    non ça va tout le temps être comme ça, comme je te l'es dit ça parse tous les commentaires, plus y en a plus ça prend du temps :/
  • fightsoulfightsoul Member
    mai 2008 modifié
    Re,
    en faite en y repensant tu peux prendre que les 15 derniers fichiers commentaires (par exemple) ce qui prendra beaucoup moins de temps.
    Pour ça il faut remplacer
    $aComs = $pluxml->ccon->query('#^com.[0-9]{4}.xml$#);
    par
    $aComs = $pluxml->ccon->query('#^com.[0-9]{4}.xml$#', 'rsort', 0, 15);.
  • fightsoul a écrit:
    Re,
    en faite en y repensant tu peux prendre que les 15 derniers fichiers commentaires (par exemple) ce qui prendra beaucoup moins de temps.
    Pour ça il faut remplacer
    $aComs = $pluxml->ccon->query('#^com.[0-9]{4}.xml$#);
    par
    $aComs = $pluxml->ccon->query('#^com.[0-9]{4}.xml$#', 'rsort', 0, 15);.
    Bonsoir,

    Ce n'est pas vraiment exact car la tu prends les 15 derniers fichiers commentaires des articles et non pas les derniers commentaires.
    La version Blog beta 4 proposera cette fonctionnalité sans parser un pas un les fichiers com (donc très rapide...)
    Bien cordialement
  • Très bonne nouvelle marama. ;)

    TCho, Hamtaro.
Connectez-vous ou Inscrivez-vous pour répondre.