Injection des Titres dans title. au secours !

Injection des Titres dans title. au secours ! - PHP - Programmation

Marsh Posté le 18-02-2008 à 06:24:38    

Bonjour,
 
Je souhaites intégré sous phpBB un agrégateur de Flux RSS... Ca c'est fait. j'ai fait pas mal de modifs.
 
Et j'aimerais rewriter toutes les urls de celui ci.. Je n'ai pas encore commencé.
 
Pour le moment je "m'arrache les cheveux" pour tenter de mettre les titres des Rubriques + Nom des Flux dans le titre de la page (<title> ).
 
J'ai réussit déjà à mettre la pagination dans le titre de la page (Page1, Page2 etc...)
 
Mais là pour injecter les Noms des Rubriques et des Noms de Flux... Ce n'est pas facile pour moi.
 
Voici le début du code. C'est une page que j'ai nommé rss-actus.php avec en début le code de phpBB pour l'inclure à phpBB.
 
Le fichier :

Code :
  1. include('rss/config.php');


contient les infos de connexion à la BDD.
 
Et celui :

Code :
  1. include('rss/functions.php');


Les fonctions du script.
 
 

Code :
  1. <?php
  2. define('IN_PHPBB', true);
  3. $phpbb_root_path = './';
  4. include($phpbb_root_path . 'extension.inc');
  5. include($phpbb_root_path . 'common.'.$phpEx);
  6. //
  7. // Start session management
  8. //
  9. $userdata = session_pagestart($user_ip, PAGE_SEARCH);
  10. init_userprefs($userdata);
  11. //
  12. // End session management
  13. //
  14. make_jumpbox('viewforum.'.$phpEx);
  15. //
  16. // Lets build a page ...
  17. //
  18. $paginationtl = (@$_GET["deb"] != 0) ? ' - Page'  .( floor( (@$_GET["deb"] / '40') ) + 1 ) : '';
  19. $page_title = "Actualités, News du Web - RSS".$paginationtl;
  20. include($phpbb_root_path . 'includes/page_header.'.$phpEx);
  21. /*      Agrégateur RSS v1.0 - PHP4/MySQL
  22.       © Didier YVER 2004
  23.       http://www.ASP-PHP.net
  24. */
  25. include('rss/config.php');
  26. include('rss/functions.php');
  27. // Affichage
  28. ?>
  29.    <style>
  30.       td,input,select { font:normal 8pt Verdana }
  31.       i { font: normal 8pt Arial; color:gray }
  32.       A { text-decoration:none }
  33.       A:hover { text-decoration:underline }
  34.       .a { font:bold 8pt Verdana }
  35.       .stabilo { background:yellow }
  36.    </style>


 
 
 
Il faudrait, je pense, que je récupère les noms de rubrique et Titre depuis la BDD mais le problème c'est que les balises title sont dans :  
 

Code :
  1. include($phpbb_root_path . 'includes/page_header.'.$phpEx);


et si je met les infos de connexions à la BDD du script RSS avec les requetes SQL, ça chamboule tout les connexions à la BDD de phpBB...
 
Alors avec mes 5% de connaissance en php je ne vois pas comment c'est possible de faire ça.
 
Merci pour votre aide.
 
Si, pour m'aider, vous avez besoin d'autres informations ou des fichiers... Je vous les fournirez.
 
Je n'ai pas de lien aussi parce que je travail en local.


Message édité par mkex64 le 18-02-2008 à 07:48:11

---------------
http://www.unicornis.org/
Reply

Marsh Posté le 18-02-2008 à 06:24:38   

Reply

Marsh Posté le 18-02-2008 à 08:05:29    

Je suis pas sur d'avoir compris ton problème.. Mais effectivement si t'inclu les directives de connexion a la base de donnée des rss. ca va te changer celle de phpbb. Donc ce que tu dois faire c'est te connecter en 1er lieu (en haut de ton script) a celle RSS, tu stoques ce que tu as besoin dans un variable, et après tu ouvres celles phpbb (qui donc fermera celle rss). Tu ne pourras plus executer de requetes sur celle rss, donc faut bien sortir toutes les info que t'as besoin avant..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 18-02-2008 à 10:08:18    

Merci esox_ch :)
 
J'ai réussit à faire se que je voulais en mettant les infos de connexions à la BDD des RSS puis ensuite les requêtes SQL pour récupérer le Titre, noms des RSS et mettre ça dans la variable $page_title, avec des if else et tout ce qu'il faut. (car il y a 3 conditions Rubrique, Titre RSS, page accueil) + la pagination dans le title.
 
Puis après tout ça j'ai mis les infos de connexion BDD de phpbb avec le header de celui-ci et ensuite j'ai remis les infos de connexions BDD des RSS avec tout le reste du script.
 
C'est impeccable.
 
Encore Merci.


Message édité par mkex64 le 18-02-2008 à 10:11:49

---------------
http://www.unicornis.org/
Reply

Marsh Posté le 18-02-2008 à 18:39:07    

Bon voilà j'ai presque terminé le Rewriting des URL, j'ai juste un petit problème.
 
J'ai certains accents qui ne passent pas à la fonction format_url de phpBBSEO :
 

Code :
  1. function format_url( $url, $type = 'topic' ) {
  2.  $url = strip_tags($url);
  3.  $url = htmlentities($url, ENT_COMPAT, $this->encoding);
  4.  $url = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $url );
  5.  $url = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$url);
  6.  $url = preg_replace( array("`[^a-z0-9]`i","`[-]+`" ) , "-", $url);
  7.  $url = ( $url == "" ) ? $type : strtolower(trim($url, '-'));
  8.  return $url;
  9. }


 
 
exemple :
 
- Le titre :
Une édition spéciale pour The Witcher
- l'URL :
http://www.unicornis.org/une-ditio [...] -n344.html
 
 
Et d'autres qui passent très bien, toujours sur la même page :
- Le titre :
Arecibo découvre le premier système triple d'astéroïdes
- l'URL :
http://www.unicornis.org/arecibo-d [...] -n345.html
 
 
Voici le code qui crée ces liens :
 

Code :
  1. $news_url = $phpbb_seo->format_url(smart_utf8_decode($val["titre"])).'-n'.$val["ID"].'.html';
  2.   echo "class=a href='".$news_url;
  3.          } else {
  4.             // si c'est un news à description sélectionnée, stabilote
  5.             if(@$_GET["news"]==$val["ID"]) echo "class=stabilo ";
  6.             // lien vers le site
  7.             echo "target='_blank' href='".$val["lien"];
  8.          }
  9.          echo "'>".smart_utf8_decode($val["titre"])."</A>
  10.             <i>[".$val["titre2"]."]</i>


Message édité par mkex64 le 18-02-2008 à 20:49:01

---------------
http://www.unicornis.org/
Reply

Marsh Posté le 18-02-2008 à 20:28:12    

Je devrais peut être ouvrir un nouveau sujet non ? Parce que le problème et tout autre...


---------------
http://www.unicornis.org/
Reply

Marsh Posté le 19-02-2008 à 02:01:51    

A mon sens tu devrais juste fusiller l'accent pour pas l'avoir dans l'URL, parce à mon sens ça apporte rien d'autre que des emmerdes ..

Reply

Marsh Posté le 19-02-2008 à 06:31:59    

Bonjour,
 
Merci, mais la fonction format_url est la pour virer les accents normalement avec :
 

Code :
  1. $url = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $url );


 
D'ailleur dans le deuxième exemple d'URL que j'ai mis les accents et tilde (é,è,',é,¨,) sont bien remplacés.
 
Seul certains, provenant de certains Flux RSS ne passent pas bien au format_url.
 
Et comme je le dis je pense à un problème d'encodage, suivant l'encodage de caractère de certains Flux.
 
En fait ce sont les Flux RSS de clubic qui passe mal. (les titres injectés dans l'URL)
Le flux RSS de futura-science est encodé en UTF-8
celui de PC-Inpact en ISO-8859-1
Et celui de Clubic en ISO-8859-1 je crois ??? Puisque si j'enlève la fonction smart_utf8_decode ça passe bien...
 
Ce qui est bizarre c'est que les accents sont bien affichés sur la page. C'est seulement dans l'url que ça ne passe pas.


Message édité par mkex64 le 19-02-2008 à 10:35:27

---------------
http://www.unicornis.org/
Reply

Marsh Posté le 19-02-2008 à 17:31:33    

Bon j'ai trouvé le problème. Ca venait du Flux RSS de Clubic qui contient des caractères accentués sous forme d'entités html numériques.
 
Voilà un exemple d'un titre de la source du Flux :

Code :
  1. Microsoft : des outils de d&#233 ;veloppement gratuits


Edit : j'ai mis un espace entre 233 et ; car sinon ça convertit automatiquement en é.
 
 
En cherchant des fonctions j'ai trouvé :
 

Code :
  1. function numericentitieshtml($str){
  2.   return preg_replace('/&#(\d+);/e', 'chr(str_replace(";","",str_replace("&#","","$0" )))', $str);
  3. }


 

Code :
  1. $titre_url= smart_utf8_decode($val["titre"]);
  2. $titre_url = numericentitieshtml($titre_url);
  3. $news_url = $phpbb_seo->format_url($titre_url).'-n'.$val["ID"].'.html';


 
Ceci fonctionne parfaitement ==>> http://www.unicornis.org/rss-actualites-news.html
 
 :D  Merci.


---------------
http://www.unicornis.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed