logo

NPDS : Gestion de contenu et de communauté


Content & Community Management System (CCMS) robuste, sécurisé, complet, performant, parlant vraiment français, libre (Open-Source) et gratuit.
40 visiteur(s) et 0 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 110 357 809

  • Nb. de membres 8 696
  • Nb. d'articles 1 695
  • Nb. de forums 26
  • Nb. de sujets 8
  • Nb. de critiques 92

Top 10  Statistiques

Index du forum »»  Questions »» fonction headlines

Modérateur(s)developpeurjpbJireck

Poster une réponse dans le sujet

A propos des messages publiés :
Les utilisateurs anonymes peuvent poster de nouveaux sujets et des réponses dans ce forum.

 

Aperçu des sujets :

fliaigre fliaigre
Posté : 15 mars 2012 à 13:15
Avec ta nouvelle version ça ne fonctionne pas. Rien n'est décodé donc j'ai remis celle-ci :

<?php  
// --------------------------------------------------------
// d'après parse_flux-2 pour lire des fichiers RSS/RDF/Atom
// Dominique WOJYLAC < http://wojylac.free.fr>
// 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 en la mettant dans un fichier Ã  inclure
// fonction destinée Ã  nettoyer le texte récupéré
// que l'on pourrait séparer de ce code en la mettant dans un fichier Ã  inclure
function clean_text($text$encodage '',$long) {
  if ($encodage == 'utf-8') {
    $text = utf8_decode($text);
  }
  $avant = array(
    '&lt;',
    '&gt;',
    '&quot;',
    '&amp;',
    '|@|' // pour traitement correct des caractères spéciaux préalablement remplacés (voir plus bas)
    );
  $apres = array(
    '<',
    '>',
    '"',
    '&',
    '&#'
    );
  $text = substr(str_replace($avant, $apres, $text),0,$long).' ...';
  return $text;
}

function lit_RSS($flux,$delai,$nbnews,$affichage,$long,$block_title) {
// chemin relatif vers le dossier cache
// le répertoire "cache" doit Ãªtre autorisé en Ã©criture
// ne pas oublier / Ã  la fin
$dir_cache = './cache/';

// nom du fichier mis en cache
//$file_cache = 'flux.html';
$url_explode = explode('/',$flux); 
$file_cache = ($url_explode[2]).'.html';

if (!is_dir($dir_cache)) {
  exit ('Répertoire cache "'.$dir_cache.'" inexistant !');
}

!include!_once('rss_read.inc.php'); 
$rss = new rss_read();
//$flux = ' http://npds.org/backend.php'; //adresse du flux passée par la fonction.
// voir la doc pour cette fonction
$date_modif = $rss -> get_last_modified($flux);

if ($date_modif > 0) {
  // le serveur distant a retourné une date de dermière modification
  // on remettra Ã  jour immédiatement en cas de modification postérieure
  // Ã  la date du fichier en cache
  $delai = 0;
}
else {
  // on impose la mise Ã  jour avec une certaine periodicité
  $date_modif = time();
  // le delai entre deux rafraichissements en secondes Ã  régler suivant le type de fil ici 2 heures
  //$delai = 600; //délai passé par la fonction
}

// le fichier est-il en cache et suffisamment jeune
$file_cache = $dir_cache.$file_cache;
$en_cache = file_exists($file_cache);
if ($en_cache) {
  $en_cache = ($date_modif < filemtime($file_cache) + $delai);
}

if (!$en_cache) {
  // 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 Ã  remplacer par d'autres
  // doit Ãªtre invoqué avant parsefile
  // cette fonction est optionnelle et ne doit Ãªtre utilisée que pour certains fils.
  $avant = array('&#','&bull;');
  $apres = array('|@|','-');
  $rss -> to_replace_with($avant, $apres);

  // parser le fichier news
  $res = $rss -> parsefile($flux);
  
  if ($res) {
    $encode = $rss -> get_encoding();
    
    // recupération des données sur le channel
    $channel = $rss -> get_channel();
  
    // nombre d'items 
    if ($nbnews > $rss -> get_num_items()) $nbnews =  $rss -> get_num_items(); // nombre de news Ã  afficher passé par la fonction
    
    // recup array des données 
    $items = $rss -> get_items();
    if ($items) {
      $content .= '<ul>';
      for($i = 0; $i < $nbnews; $i++) { 
        if ($affichage == '1') {
          $content .= '<li> '.$items[$i]['link'].'</li>'."\n"; // pour le RSS "bizarre" de PedigreeDataBase
        } else {
          $content .= '<li> <a href="'.$items[$i]['link'].'" target="_blank" alt="'.$items[$i]['title'].'" title="'.$items[$i]['title'].'">'.clean_text($items[$i]['title'], $encode, $long).'</a></li>'."\n";
        }
      }
      $content .= '</ul>';
    }
    // affichage site, url, description 
    $content .=  '<div><a href="'. $channel['link'].'" target="_blank"> Lire la suite ...</a></div>';
  } // fin if $rss
  
  $fd = fopen($file_cache, "w");
  fputs($fd, $content);
  fclose($fd);
} else {
    //Ouverture du fichier en lecture seule
    $handle = fopen($file_cache, 'r');
    //Si on a réussi Ã  ouvrir le fichier
    if ($handle)
    {
      $content = '';
      //Tant que l'on est pas Ã  la fin du fichier
      while (!feof($handle))
      {
        //On lit la ligne courante  
        $content .= fgets($handle);
      }
      //On ferme le fichier
      fclose($handle);
    } else {
      $content = 'Erreur de lecture du fichier en cache';
    }
} // fin if !$en_cache
themesidebox($block_title,$content);
} // fin de fonction
?>




Celle-ci décode le texte mais pas la bulle.

Je suis sur REvolution 10.02 encodée en charset=ISO-8859-1.

Je te joins par mail.
PhilGuen PhilGuen
Posté : 15 mars 2012 à 07:52
ok c'est fait. Version 1.04 sur guenet.net ou guenet.org

J'ai laissé ta modif, mais ca ne fonctionne pas pour moi au niveau de l'encodage.

Faut que je me penche la dessus ... en fait, me semble-t-il, faut adapter l'encodage du fil à celui du site "lecteur" ... je sais comment avoir l'encodage d'une chaîne (donc du fil) ... mais je ne sais pas comment détecter celui utilisé par un site.

De toutes façons, comme déjà dit, faudrait que les "vrais" programmeurs se penchent dessus pour l'optimiser.
:-P

PS - Pour ne pas "polluer" le forum, peux-tu me joindre par mail (enlever les xx à l'adresse en lien dessous).

Peux-tu me faire un accès admin pour que je fasse des tests à partir de ton site car il ne semble pas que nos sites soient encodés de la même manière.

Message édité par : PhilGuen / 15-03-2012 11:12

fliaigre fliaigre
Posté : 15 mars 2012 à 07:10
Super :=!
PhilGuen PhilGuen
Posté : 14 mars 2012 à 22:44
Citation : fliaigre 

Tu as une petite erreur au début du script :

function clean_text($text, $encode = '', $long) {
    if ($encodage == 'utf-8') {
        $text = utf8_decode($text);
}


au lieu de

function clean_text($text, $encodage = '',$long) {
    if ($encodage == 'utf-8') {
        $text = utf8_decode($text);
    }


Après correction le lien est bien decodé mais pas le texte de la bulle. Sinon c'est super. :=!  


Désolé, j'étais abs pour la journée.

c'est ma faute, je me suis mélangé les pinceaux en effacant mes tests (j'avais mis d'autres tests avec la variable $encodage).

Demain, je te fais une version qui encodera aussi la bulle.
fliaigre fliaigre
Posté : 13 mars 2012 à 21:07
Tu as une petite erreur au début du script :

function clean_text($text, $encode = '', $long) {
    if ($encodage == 'utf-8') {
        $text = utf8_decode($text);
}


au lieu de

function clean_text($text, $encodage = '',$long) {
    if ($encodage == 'utf-8') {
        $text = utf8_decode($text);
    }


Après correction le lien est bien decodé mais pas le texte de la bulle. Sinon c'est super. :=!
PhilGuen PhilGuen
Posté : 13 mars 2012 à 18:52
C'est fait.

J'ai mis le "div" à la place du "p" (mauvaises habitudes de programmation)

Ce code n'est pas vraiment de moi mais c'est une adaptation de ceux fournis avec la librairie "fil_le". Faudrait que les "chefs" se penchent dessus car je ne suis qu'un bidouilleur et pas un programmeur. Sans doute à ajouter une gestion d'erreurs.

Enfin, pour l'instant, le principal est que ca fonctionne et que ca te serve autant qu'à moi.

@+

Message édité par : PhilGuen / 13-03-2012 19:36

fliaigre fliaigre
Posté : 13 mars 2012 à 18:26
Tu peux le voir en fonctionnement ici : http://www.preparateur-en-pharmacie.com

AncisA c'est avec headline et AFSSAPS c'est avec ton module.

J'ai remplacé le balse p par un div pour afficher le lien "Lire la suite..."
fliaigre fliaigre
Posté : 13 mars 2012 à 18:18
Tu me diras quand ce sera prêt.

Ceci me sera très utile pour relayer les alertes de l'AFSSAPS.

Vraiment merci.
PhilGuen PhilGuen
Posté : 13 mars 2012 à 14:29
Pour les caractères, problème d'encodage. Regarde ce que ca donne en commentant (//) la ligne 15 ou en supprimant carrément les lignes 14-15-16 du fichier lecteurRSS.php.

De mon côté, avec les sites en UTF8, ca a l'air de coller (guenet.net - guenet.org)

Pour la bulle, une balise title et alt doit faire l'affaire.

Je fais les modifs

Message édité par : PhilGuen / 13-03-2012 16:42

fliaigre fliaigre
Posté : 13 mars 2012 à 13:57
OK ça marche, juste un pb avec l'affichage des caractères accentués avec le retour de NPDS

Pour l'AFSAPS ça marche. Le top serait d'avoir le texte complet dans une bulle comme avec headlines.

Vraiment bravo.