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.
17 visiteur(s) et 1 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 108 448 449

  • Nb. de membres 8 693
  • 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

Nouveau sujet
 fonction headlines#25321Répondre

5Contributeur(s)
PhilGuenB-Magcolonelwogdeveloppeurfliaigre
3 Modérateur(s)
developpeurjpbJireck
fliaigre fliaigreicon_post
Je vais voir ton script.

Je viens de trouver d'où venait l'erreur.

J'avais une erreur dans ma variable $nuke_url un petit slash en moins http:/www.ancisa.fr au lieu de http://www.ancisa.fr
PhilGuen PhilGuenicon_post
Citation : fliaigre 

Je vais voir ton script.
 


En cas de besoin, je l'ai mis en téléchargement sur guenet.net

Citation : fliaigre 

Je viens de trouver d'où venait l'erreur.

J'avais une erreur dans ma variable $nuke_url un petit slash en moins http:/www.ancisa.fr au lieu de http://www.ancisa.fr" target="_blank" class="noir"> http://www.ancisa.fr  


J'étais pas loin, hein!!! ;-)
fliaigre fliaigreicon_post
Tu étais même tout près... :=!

Lorsqu'il s'agit d'afficher les news d'un autre site NPDS headline s'en tire à peu près bien(sauf erreur de paramètrage...) mais dans beaucoup d'autres cas non.
Ex: http://www.afssaps.fr/syndication/afssaps_rss/med résultat... pfff donc je vais essayer ta solution.
fliaigre fliaigreicon_post
J'ai installé de la manière suivante :
Création du répertoire fil_le dans le répertoire module
Mise en place dans ce répertoire de:
index.html
lecteurRSS.php
rss_read.inc.php

Dans header_before inc : if (file_exists("modules/fil_le/lecteurRSS.php")) !include!_once("modules/fil_le/lecteurRSS.php"); sans les !

Dans le bloc :
function#lit_RSS
params# http://www.npds.org/backend.php sans l'espace entre # et h

mais sauf si j'ai raté quelque chose j'ai çà :

Warning: Missing argument 2 for lit_RSS(), called in /homez.344/preparatx/www/mainfile.php on line 1024 and defined in /homez.344/preparatx/www/modules/fil_le/lecteurRSS.php on line 35

Warning: Missing argument 3 for lit_RSS(), called in /homez.344/preparatx/www/mainfile.php on line 1024 and defined in /homez.344/preparatx/www/modules/fil_le/lecteurRSS.php on line 35

Warning: Missing argument 4 for lit_RSS(), called in /homez.344/preparatx/www/mainfile.php on line 1024 and defined in /homez.344/preparatx/www/modules/fil_le/lecteurRSS.php on line 35

Warning: Missing argument 5 for lit_RSS(), called in /homez.344/preparatx/www/mainfile.php on line 1024 and defined in /homez.344/preparatx/www/modules/fil_le/lecteurRSS.php on line 35

Warning: Missing argument 6 for lit_RSS(), called in /homez.344/preparatx/www/mainfile.php on line 1024 and defined in /homez.344/preparatx/www/modules/fil_le/lecteurRSS.php on line 35
PhilGuen PhilGuenicon_post
Il te manque des paramètres

pour NPDS tu peux avoir ca



function#lit_RSS
params# <a href="http://npds.org/backend.php,600,5,0,17,NPDS" target="_blank" class="noir">http://npds.org/backend.php,600,5,0,17,NPDS</a>



Comme tu as téléchargé l'archive sur guenet.net tu as les explications dans le fichier lisez_moi.txt.

Vérifie également que tu as bien un dossier "cache" à la racine

Message édité par : PhilGuen / 13-03-2012 10:01

PhilGuen PhilGuenicon_post
L'éditeur de NPDS "fout sa merde". dans la ligne param#, il n'y a pas d'espace et tu mets simplement l'adresse du fil, pas le lien complet avec les balises etc...

ca serait à revoir dans les futures versions : ce qui est dans les balises "code" devrait rester tel que :-|
fliaigre fliaigreicon_post
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.
PhilGuen PhilGuenicon_post
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 fliaigreicon_post
Tu me diras quand ce sera prêt.

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

Vraiment merci.
fliaigre fliaigreicon_post
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..."
PhilGuen PhilGuenicon_post
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 fliaigreicon_post
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 PhilGuenicon_post
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 fliaigreicon_post
Super :=!
PhilGuen PhilGuenicon_post
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 fliaigreicon_post
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.