Forum     S'enregistrer     Se connecter     Faq    


        

     AdoJeunZ -> Passions -> Sciences, Technologies, Informatique, Internet -> Url rewriting phpbb avec le titre dans l'url

Devenir membre !

Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas poster de réponses
Url rewriting phpbb avec le titre dans l'url
Auteur Message
Ohax Masculin
Fondateur

Avatar

Autorisation : Admin
Nb de messages : 14817
Posté le : Sam 20 Aoû 2005, 1:15    

Je me permet de vous faire découvrir le travail de kaizen qui a fait cet excellant mod pour phpbb


Citer : Kaizen
Bonjour,

Je me suis inspiré de vos posts et de vos remarques sur http://www.webrankinfo.com/forums/viewtopic_24693.htm pour faire le mod ci-joint.

Par rapport aux mod poposé par Ohax, dont j'ai repris et adapté une partie du code (.htaccess en particulier) :
  • vitesse de traitement amélorée
  • les chiffres contenus dans un titre sont conservés dans l'url
  • le titre apparait sur toutes les pages (celles de type viewtopic.php?t=74505&start=8595 n'étaient pas prisent en charge)
  • le titre des forums apparait dans l'url
  • seuls les invités ont des url "re-writées"


Je n'ai pas traité les aspect SID ni optimistation par supression des liens inutiles pour les invités. Le mod Able2Know.com SEO -http://www.able2know.com/forums/viewtopic.php?t=15132 le fait très bien, bien qu'on puisse aller plus loin encore (contactez-moi si vous êtes interessés)


Un grand merci à Ohax, j'aprécie l'esprit dans lequel tu partages ton travail. icon_wink.gif
J'aimerai avoir votre avis sur "la chose". Il serait sympa de faire évoluer le concept pour arriver à quelque chose de poussé.

Télécharger :
Version 0.2.2
Version 0.1.1

Je vous rapelle que ces versions sont toujours au stade "beta" et ne devraient donc pas être utilisées en environnement de production.



Maintenant je vait vous faire part des petits plus pour optimiser le tout icon_wink.gif

Notez que pour que cette modification marche correctemment vous devez désactiver les sessions pour les invités !

C'est à dire appliquer cette modification :


Code
#<br /> #-----[ OPEN ]---------------------------------------------<br /> #<br /> includes/sessions.php<br /> <br /> #<br /> #-----[ FIND ]---------------------------------------------<br /> # around line 157<br />    $sql = "UPDATE " . SESSIONS_TABLE . "<br />       SET session_user_id = $user_id, session_start = $current_time, session_time = $current_time, session_page = $page_id, session_logged_in = $login, session_admin = $admin<br />       WHERE session_id = '" . $session_id . "'<br />          AND session_ip = '$user_ip'";<br /> <br /> #<br /> #-----[ REPLACE WITH ]---------------------------------------<br /> #<br />    $sql_ip = $user_id == ANONYMOUS ? " AND session_ip = '$user_ip'" : '';<br />    $sql = "UPDATE " . SESSIONS_TABLE . "<br />       SET session_ip = '$user_ip', session_start = $current_time, session_time = $current_time, session_page = $page_id, session_logged_in = $login, session_admin = $admin<br />       WHERE session_id = '" . $session_id . "' $sql_ip<br />          AND session_user_id = '$user_id'";<br /> <br /> #<br /> #-----[ FIND ]---------------------------------------------<br /> # around line 210<br />    $SID = 'sid=' . $session_id;<br /> <br /> #<br /> #-----[ REPLACE WITH ]---------------------------------------<br /> #<br />    $SID = $user_id > 0 ? 'sid=' . $session_id : '';<br /> <br /> #<br /> #-----[ FIND ]---------------------------------------------<br /> # around line 288<br />             $SID = ($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' . $session_id : '';<br /> <br /> #<br /> #-----[ REPLACE WITH ]---------------------------------------<br /> #<br />             $SID = $userdata['user_id'] > 0 ? (($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' . $session_id : '') : '';<br /> <br /> #<br /> #-----[ FIND ]---------------------------------------------<br /> # around line 340<br />    //<br />    // If we reach here then no (valid) session exists. So we'll create a new one,<br /> #<br /> #-----[ BEFORE, ADD ]---------------------------------------<br /> #<br />    elseif(empty($sessiondata))<br />    {<br />       // try to login guest<br />       $sql = "SELECT u.*, s.*<br />          FROM " . SESSIONS_TABLE . " s, " . USERS_TABLE . " u<br />          WHERE s.session_ip = '$user_ip'<br />             AND s.session_user_id = " . ANONYMOUS . "<br />             AND u.user_id = s.session_user_id<br />                LIMIT 0, 1";<br />       if ( !($result = $db->sql_query($sql)) )<br />       {<br />          message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql);<br />       }<br /> <br />       $userdata = $db->sql_fetchrow($result);<br /> <br />       if ( isset($userdata['user_id']) )<br />       {<br />          if ( $current_time - $userdata['session_time'] > 60 )<br />          {<br />             $sql = "UPDATE " . SESSIONS_TABLE . "<br />                SET session_time = $current_time, session_start = $current_time, session_page = 0<br />                WHERE session_id = '" . $userdata['session_id'] . "'";<br />             if ( !$db->sql_query($sql) )<br />             {<br />                message_die(CRITICAL_ERROR, 'Error updating sessions table', '', __LINE__, __FILE__, $sql);<br />             }<br />          }<br />          return $userdata;<br />       }<br />    }<br /> <br /> #<br /> #-----[ SAVE/CLOSE ALL FILES ]------------------------------------------<br /> #<br /> # EoM





Je me suis permit d'apporter une petite contribution supplémentaire !

Il s'agit de la solution la plus simple que j'ai trouvé pour permettre une meilleure indexation des forums qui ont subits cette modifications.
Cette modification est utile pour les forums qui dépassent les 100 messages / jour.
Ce code vous sera égalemment utile si vous désirez utiliser l'url rewriting de kaizen afin de voir tous vos topics rapidemments indexées.

Le code n'est pas trés compliqué mais je pense que ceux qui ont appliqués la modification de kaizen devraient s'appuyer dessus !


A la racine de votre forum nous allons créer le fichier lasts.php

Voici son code :


Code
<br /> <title>Listing Sitemap</title><br /> <br /> <?<br /> // Simple Sitemap phpbb for url rewrite kaizen V 2.2.0<br /> // By Ohax http://www.adojeunz.com<br /> // Support :  http://www.webrankinfo.com/forums/viewtopic_34332.htm<br /> <br /> //Ce fichier est a mettre a la racine de votre forum<br /> <br /> $repertoire = "lasts/"; // Repertoire des sitemaps<br /> $opendir = opendir($repertoire);<br /> $adresse_site = ""; // Adresse de votre site avec un slash a la fin ( /!\ cette variable est optionnelle)<br /> $chemin_forum = ""; // Ici on indique le chemin du forum par exemple /forum/<br /> <br /> while ($fichier = readdir($opendir)) {<br /> if(is_file($repertoire.$fichier)) {<br /> echo "Fichier ".$fichier;<br /> echo "<br>";<br /> echo "URL du sitemap spécifique : <a href=$chemin_forum$repertoire$fichier>$adresse_site$chemin_forum$repertoire$fichier</a>";<br /> echo "<br><br>";<br /> }<br /> }<br /> closedir($opendir);<br /> <br /> ?><br />





Ensuite, nous allons tout créer un repertoire que l'on apellera lasts et que l'on placera à la racine du forum !

Dans ce repertoire nous y placerons un fichier php (peu importe le nom) contenant ce code dont je me suis inspiré d'un code similaire pour le générer :



Code
<br /> <title>Sitemap</title><br /> <br /> <?<br /> // Simple Sitemap phpbb for url rewrite kaizen V 2.2.0<br /> // By Ohax http://www.adojeunz.com<br /> // Support :  http://www.webrankinfo.com/forums/viewtopic_34332.htm<br /> <br /> //Ce fichier est a mettre dans un repertoire nommé lasts situé a la racine de votre forum<br /> <br /> include('../config.php'); // Indiquez le chemin vers votre config.php<br /> $base= ""; // Nom de votre base de donnée<br /> $chemin_forum = ""; // Ici on indique le chemin du forum par exemple /forum/<br /> <br /> $link = mysql_connect ($dbhost,$dbuser,$dbpasswd) or die ('Erreur : '.mysql_error() ); // Connection à la base de donnée<br /> mysql_select_db($base) or die ('Erreur :'.mysql_error());<br /> <br /> $select = "SELECT topic_title,topic_id,topic_replies,topic_poster FROM phpbb_topics WHERE forum_id= 17 ORDER BY topic_id DESC limit 200"; // WHERE forum_id= indique le forum afficher et DESC limit indique le nombre de posts a afficher ;-)<br /> $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );<br /> <br /> while($row = mysql_fetch_array($result))<br /> <br /> {<br /> <br /> $topic_id = $row['topic_id'];<br /> $titre = $row['topic_title'];<br /> <br /> // Maintenant on passe à l'url rewriting et à la génération des urls<br /> <br /> $change_space = "-";<br /> <br /> $url_title = $titre;<br /> <br /> $url_title = strtolower($url_title);<br />             <br /> $url_title = strtr($url_title,'áâàäéêèëíîìïóôòöúûùüýçñ','aaaaeeeeiiiioooouuuuycn');<br /> <br /> $url_title = preg_replace("/(&gt;|&lt;|&quot;|&amp;)/",$change_space,$url_title);<br /> <br /> $url_title = preg_replace("/[^a-z0-9_\-]/",$change_space,$url_title);<br /> <br /> $url_title = preg_replace("/[$change_space]+/",$change_space,$url_title);<br /> <br /> ($url_title{0} == $change_space ? $url_title = substr($url_title,1) : '' );<br /> <br /> ($url_title{strlen($url_title)-1} == $change_space ? $url_title = substr($url_title,0, strlen($url_title)-1) : '' );<br /> <br /> // On affiche le résultat<br /> <br /> echo '<a href="'.$chemin_forum.''.$topic_id.'_0-'.$url_title.'.html">'.$titre.'</a><br>';<br /> <br /> }<br /> <br /> mysql_free_result($result);<br /> <br /> mysql_close(); //On ferme la connection à la base de donnée<br /> <br /> ?><br />



Maintenant passont à la ligne 12


Code
$select = "SELECT topic_title,topic_id,topic_replies,topic_poster FROM phpbb_topics WHERE forum_id= 17 ORDER BY topic_id DESC limit 200";




Code
WHERE forum_id=


Correspond a l'id du forum dont vous voulez faire la map
Vous devrez donc faire 5 fichier avec 5 valeur différentes si vous avez 5 rubriques icon_wink.gif


Code
DESC limit


Indique le nombre de posts qui doivent être affichés


Il y a aussi possibilité de ne faire qu'un seul fichier en supprimant la partie "WHERE forum_id=" mais la présentation sera moin structurée et vous risquez d'indexer les liens de vos topics de modération ou rubrique privée

Bien evidemment n'oubliez pas de faire un lien vers lasts.php pour que google indexe votre simple sitemap !

En esperant que cela puisse servir au plus grand nombre icon_wink.gif
 Utilisateur hors ligne Envoyer un message privé Haut de page Bas de page 
 
Vous ne pouvez pas poster de réponses

     AdoJeunZ -> Passions -> Sciences, Technologies, Informatique, Internet -> Url rewriting phpbb avec le titre dans l'url


  Procès-Verbal de Dépôt
Mentions légales et copyright, notre charte.

Tous les logos et marques sont des Propriétés respectives.
Tout copie entiere ou partielle de ce site peuvent faire l'objet de poursuite judiciaire.
Les propos tenus sont de la responsabilité de leurs auteurs.


Thème basé sur un skin dgfX FSB : Merci à Nérévare
Powered by Fire-Soft-Board v1.0.9 © 2004 - 2008 Groupe FSB

Liens :
Plan du Forum - Sapeurs pompiers - ActuDZ - Moto 50cc - Forum moto 50cc - Recette-dessert.com


Nous contacter / Devenir partenaire !