|
Titre: Rewriting amélioré forum smf (titre des posts dans les url) Posté par: Diabolo le 09 Mars 2008 à 14:46:46 Slt,
Suite à ce post http://www.pragmamx.fr/Forum-topic-1597.html Je suis tombé sur celui là http://www.mich-tipps.de/Forum-top-mod_rewrite-SMF-fuer-PragmaMx-266.html#new Y a qui ont essayé ? Par contre pour cette partie de code: Code: $umlaute = array( "ä", "ü", "ü", "ö", "Ä", "Ü", "Ö", "ß", "ß", "Ü", "ß", "ä", "&", """ ); $ersetzung = array( "ae", "ue", "ue", "oe", "ae", "ue", "oe", "ss", "ss", "Ue", "ss", "ae", "und", "-" ); Remplacer par: Code: // Umlaute $umlaute = array("À", "Á", "Â", "Ã", "Ä", "Å", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ò", "Ó", "Ô", "Õ", "Ö", "Ù", "Ú", "Û", "Ü", "Ý", "à", "á", "â", "ã", "ä", "å", "ç", "è", "é", "ê", "ë", "ì", "í" ,"î", "ï", "ð", "ò", "ó", "ô", "õ", "ö", "ù", "ú", "û", "ü", "ý", "ÿ", "&"); $ersetzung = array("A", "A", "A", "A", "A", "A", "C", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "U", "U", "U", "U", "Y", "a", "a", "a", "a", "a", "a", "c", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "o", "u", "u", "u", "u", "y", "y", "et"); je vais essayé de mon coté voir ce que ça donne ;) Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: le Chaland le 09 Mars 2008 à 20:48:40 Tu nous tiens au courant ? :thumbup:
Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: angecris le 20 Octobre 2009 à 00:03:19 UP :thumbup:
Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: Diabolo le 20 Octobre 2009 à 00:19:36 Quelqu'un à réessayé ?
Je traduit rapide le post de mich tips: -> Activer le mod rewrite sur pragmaMx (Panel admin>configuration) http://www.pragmamx.fr/Content-pid-36.html ->Rajouter les règles suivantes dans votre .htaccess après les règles de # Your_Account Modul par exemple Code: ##Regles pour smf Forum RewriteRule ^(Forum)-cat-(.*)-([0-9]+).html$ modules.php?name=$1&board=$3 [L] RewriteRule ^(Forum)-top-(.*)-([0-9]+).html$ modules.php?name=$1&topic=$3 [L] RewriteRule ^(Forum)-top-(.*)-([0-9]+)-start-(.*).html$ modules.php?name=$1&topic=$3.$4[L] -> Ensuite dans modules/Forum/mx_functions.php recherchez le code suivant: Code: if (isset($dynachanges)) { Attention ce code est présent 2 fois c'est la deuxième fois qui nous intéresse (environ ligne 1560 pour mon cas)$smfContent = str_replace(array_keys($dynachanges), array_values($dynachanges), $smfContent); } } et juste après rajouter le code suivant en ayant pris soin au préalable de chnager le préfixe de stables dans cette portion de code: mx_ à remplacer par le préfie de vos tables ex: mx123456_ (cf panel admin de pragmaMx>configuration) Code: // Start mod_rewrite SMF 1.1.5 // Umlaute $umlaute = array("À", "Á", "Â", "Ã", "Ä", "Å", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ò", "Ó", "Ô", "Õ", "Ö", "Ù", "Ú", "Û", "Ü", "Ý", "à", "á", "â", "ã", "ä", "å", "ç", "è", "é", "ê", "ë", "ì", "í" ,"î", "ï", "ð", "ò", "ó", "ô", "õ", "ö", "ù", "ú", "û", "ü", "ý", "ÿ", "&"); $ersetzung = array("A", "A", "A", "A", "A", "A", "C", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "U", "U", "U", "U", "Y", "a", "a", "a", "a", "a", "a", "c", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "o", "u", "u", "u", "u", "y", "y", "et"); $html = array("Forum-board-", ".html"); $html_ersetzung = array("", ""); $html_t = array("Forum-topic-", ".html"); $html_ersetzung_t = array("", ""); //Forum Kategorien preg_match_all('#Forum-board-(\d*).html#', $smfContent, $forum, PREG_SET_ORDER); foreach ($forum as $forum1){ $forum2[0] = str_replace($html, $html_ersetzung, "".$forum1[0].""); $abfrage = "SELECT name, ID_BOARD FROM mx_smf_boards WHERE ID_BOARD = '$forum2[0]'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_array($ergebnis)) { $titel_forum_rewrite = $row["name"]; $titel_forum_rewrite = str_replace($umlaute, $ersetzung, $titel_forum_rewrite); $titel_forum_rewrite = preg_replace('#\W#', "-", $titel_forum_rewrite); $titel_forum_rewrite = preg_replace('#---#', "-", $titel_forum_rewrite); $titel_forum_rewrite = preg_replace('#--#', "-", $titel_forum_rewrite); $titel_forum_fert = "Forum-cat-"; $titel_forum_fert.= "$titel_forum_rewrite-"; $titel_forum_fert.= $forum2[0]; $titel_forum_fert.= ".html"; $replace = "#".$forum1[0]."(?!\d)#"; $smfContent = preg_replace($replace, $titel_forum_fert, $smfContent); } } preg_match_all('#Forum-topic-(\d*).html#', $smfContent, $forum_t, PREG_SET_ORDER); foreach ($forum_t as $forum1_t){ $forum2_t[0] = str_replace($html_t, $html_ersetzung_t, "".$forum1_t[0].""); $abfrage = "SELECT subject, ID_TOPIC FROM mx_smf_messages WHERE ID_TOPIC = '$forum2_t[0]'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_array($ergebnis)) { $titel_forum_rewrite_t = $row["subject"]; $titel_forum_rewrite_t = str_replace($umlaute, $ersetzung, $titel_forum_rewrite_t); $titel_forum_rewrite_t = preg_replace('#\W#', "-", $titel_forum_rewrite_t); $titel_forum_rewrite_t = preg_replace('#---#', "-", $titel_forum_rewrite_t); $titel_forum_rewrite_t = preg_replace('#--#', "-", $titel_forum_rewrite_t); $titel_forum_fert_t = "Forum-top-"; $titel_forum_fert_t.= "$titel_forum_rewrite_t-"; $titel_forum_fert_t.= $forum2_t[0]; $titel_forum_fert_t.= ".html"; $replace = "#".$forum1_t[0]."(?!\d)#"; $smfContent = preg_replace($replace, $titel_forum_fert_t, $smfContent); } } preg_match_all('#Forum-topic-(\d*)-start-msg(\d*).html#', $smfContent, $forum_to, PREG_SET_ORDER); foreach ($forum_to as $forum1_to){ $ersetz_for_new = "-start-msg$forum1_to[2].html"; $html_to = array("Forum-topic-", $ersetz_for_new); $html_ersetzung_to = array("", ""); $forum2_to[0] = str_replace($html_to, $html_ersetzung_to, "".$forum1_to[0].""); $abfrage = "SELECT subject, ID_TOPIC FROM mx_smf_messages WHERE ID_TOPIC = '$forum2_to[0]'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_array($ergebnis)) { $titel_forum_rewrite_to = $row["subject"]; $titel_forum_rewrite_to = str_replace($umlaute, $ersetzung, $titel_forum_rewrite_to); $titel_forum_rewrite_to = preg_replace('#\W#', "-", $titel_forum_rewrite_to); $titel_forum_rewrite_to = preg_replace('#---#', "-", $titel_forum_rewrite_to); $titel_forum_rewrite_to = preg_replace('#--#', "-", $titel_forum_rewrite_to); $titel_forum_fert_to = "Forum-top-"; $titel_forum_fert_to.= "$titel_forum_rewrite_to-"; $titel_forum_fert_to.= $forum2_to[0]; $titel_forum_fert_to.= ".html"; $replace = "#".$forum1_to[0]."(?!\d)#"; $smfContent = preg_replace($replace, $titel_forum_fert_to, $smfContent); } } preg_match_all('#Forum-topic-(\d*)-start-msg(\d*)-boardseen.html#', $smfContent, $forum_to1, PREG_SET_ORDER); foreach ($forum_to1 as $forum1_to1){ $ersetz_for_new1 = "-start-msg$forum1_to1[1]-boardseen.html"; $html_to1 = array("Forum-topic-", $ersetz_for_new1); $html_ersetzung_to1 = array("", ""); $forum2_to1[0] = str_replace($html_to1, $html_ersetzung_to1, "".$forum1_to1[0].""); $abfrage = "SELECT subject, ID_TOPIC FROM mx_smf_messages WHERE ID_TOPIC = '$forum2_to1[0]'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_array($ergebnis)) { $titel_forum_rewrite_to1 = $row["subject"]; $titel_forum_rewrite_to1 = str_replace($umlaute, $ersetzung, $titel_forum_rewrite_to1); $titel_forum_rewrite_to1 = preg_replace('#\W#', "-", $titel_forum_rewrite_to1); $titel_forum_rewrite_to1 = preg_replace('#---#', "-", $titel_forum_rewrite_to1); $titel_forum_rewrite_to1 = preg_replace('#--#', "-", $titel_forum_rewrite_to1); $titel_forum_fert_to1 = "Forum-top-"; $titel_forum_fert_to1.= "$titel_forum_rewrite_to1-"; $titel_forum_fert_to1.= $forum2_to1[0]; $replace = "#".$forum1_to1[0]."(?!\d)#"; $smfContent = preg_replace($replace, $titel_forum_fert_to1, $smfContent); } } preg_match_all('#Forum-topic-(\d*)-start-new.html#', $smfContent, $forum_to_new, PREG_SET_ORDER); foreach ($forum_to_new as $forum1_to_new){ $html_to_new = array("Forum-topic-", "-start-new.html"); $html_ersetzung_to_new = array("", ""); $forum2_to_new[0] = str_replace($html_to_new, $html_ersetzung_to_new, "".$forum1_to_new[0].""); $abfrage = "SELECT subject, ID_TOPIC FROM mx_smf_messages WHERE ID_TOPIC = '$forum2_to_new[0]'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_array($ergebnis)) { $titel_forum_rewrite_to_new = $row["subject"]; $titel_forum_rewrite_to_new = str_replace($umlaute, $ersetzung, $titel_forum_rewrite_to_new); $titel_forum_rewrite_to_new = preg_replace('#\W#', "-", $titel_forum_rewrite_to_new); $titel_forum_rewrite_to_new = preg_replace('#---#', "-", $titel_forum_rewrite_to_new); $titel_forum_rewrite_to_new = preg_replace('#--#', "-", $titel_forum_rewrite_to_new); $titel_forum_fert_to_new = "Forum-top-"; $titel_forum_fert_to_new.= "$titel_forum_rewrite_to_new-"; $titel_forum_fert_to_new.= $forum2_to_new[0]; $titel_forum_fert_to_new.= ".html"; $replace = "#".$forum1_to_new[0]."(?!\d)#"; $smfContent = preg_replace($replace, $titel_forum_fert_to_new, $smfContent); } } // Ende mod_rewrite SMF 1.1.5 Note: ce rewriting nécessite des ressources serveur supplémentaires. J'ajoute que nous avons un addons (titre dans l'url) pour les modules news, annuaire et download http://www.pragmamx.org/Downloads-op-view-lid-747.html avec dans le pack mx_modrewrite.php cette portion de code Code: // Umlaute $umlaute = array( "ä", "ü", "ö", "Ä", "Ü", "Ö", "ß", "ñ", "ó", "ô", "í", "á", "ú", "é", "ê", "ã", "ç", "û", "è", "à", "ë", "î" ); $ersetzung = array( "ae", "ue", "oe", "Ae", "Ue", "Oe", "ss", "n", "o", "o", "i", "a", "u", "e", "e", "a", "c", "u", "e", "a", "e", "i" ); qu'il faut remplacer pour s'adapter au français, cf ci-dessus Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: stefvar le 20 Octobre 2009 à 07:26:50 Bonjour,
Très intéressant que tout cela, je m'en vais voir ce que cela donne ;) Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: stefvar le 20 Octobre 2009 à 08:28:30 Re,
Je viens de mettre le tout en place et cela semble fonctionner correctement. Je vais laisser tourner quelque temps pour voir le résultat dans la durée. Par contre, il ne faut pas remplacer le deuxième code : Code: if (isset($dynachanges)) { Mais AJOUTER après celui-ci.$smfContent = str_replace(array_keys($dynachanges), array_values($dynachanges), $smfContent); } } Pour ceux qui voudrait le mettre en place, pensez à remplacer le préfixe des tables "mx_" présents dans le code par celui qui vous est propre si différent ;) Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: Diabolo le 20 Octobre 2009 à 23:49:01 Ok j'ai corrigé mon post ;)
Sinon concernant new, dl et wl, ce sera inclus en natif dans une version futur de pragmaMx avec un nouveau systeme de rewrite ;respect Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: stefvar le 21 Octobre 2009 à 08:47:15 Bonjour,
Petit retour après 24 heures d'utilisation pour dire que le système est efficace, très efficace même. La prise en compte des messages et autres par les moteurs de recherche s'en trouve diviser au moins par deux. Certes la méthode employés génère des requêtes supplémentaires mais il n'en demeure pas moins ingénieux dans son principe. Dès que j'ai un peu de temps de libre, je regarderai ce que cela donne pour d'autres modules actuellement non pris en compte ;) Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: HollowMac le 21 Octobre 2009 à 20:03:16 Pour ma part, il faut bien remplacer le code et non ajouter après. D'ailleurs, si j'ajoute après, il y a une erreur : une parenthèse en trop dans le code où il faut juste rajouter après.
Mais le remplacement des caractères accentués par leurs homologues non accentués ne marche toujours pas pour moi (j'avais déjà ce mod). Titre: Re : Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: angecris le 22 Octobre 2009 à 23:10:45 Bonjour, Petit retour après 24 heures d'utilisation pour dire que le système est efficace, très efficace même. La prise en compte des messages et autres par les moteurs de recherche s'en trouve diviser au moins par deux. Certes la méthode employés génère des requêtes supplémentaires mais il n'en demeure pas moins ingénieux dans son principe. Dès que j'ai un peu de temps de libre, je regarderai ce que cela donne pour d'autres modules actuellement non pris en compte ;) Tu veux plutot dire multiplie par 2 Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: stefvar le 23 Octobre 2009 à 09:04:50 Bonjour,
Non non, c'est bien divisé, en cela, c'est la durée avant que n'apparaisse une information dans un moteur de recherche dont je faisais allusion ;) Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: shorty le 26 Octobre 2009 à 11:13:47 Salut à tous ! ;respect
Je voulais savoir si quelqu'un saurait comment faire pour rewriter plusieurs Forums smf (avec les règles améliorées). Sa marche impec pour le premier Forum mais pour les autres. (j'ai le rewriting sans les titres). J'ai éssayé de modif le htacces mais apparement sa ne suffit pas. Est-ce que quelqu'un aurait une idée ? Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: stefvar le 26 Octobre 2009 à 14:25:50 Bonjour,
Qu'entends tu par "plusieurs forums", c'est plusieurs module forum ou ou plusieurs forums dans le même module ? Si c'est ce dernier cas, il n'y a rien de spécifique à faire si ce n'est suivre les instructions. Tout les forums seront pris en compte, seul le bloc n'aura pas la ré-écriture avancée. Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: shorty le 26 Octobre 2009 à 23:56:42 Je parle de plusieurs forums.
Le bridge permet d'installer autant de Forums que l'on veut. Sa fonctionne que sur le premier installé. Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: stefvar le 27 Octobre 2009 à 07:14:48 Bonjour,
Je suppose que lorsque l'on a installé plusieurs forums, la ré-écriture d'origine doit différer entre les forums, numétotation, lette supplémentaire je ne sais pas mais différence il doit y avoir. C'est sur ce différence qu'il faut agir au niveau du code ajouté pour la ré-écriture avancée en ajoutant les fameuses différences pour que le tout fonctionne. Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: shorty le 27 Octobre 2009 à 11:15:33 en fait je crois que c'est dans les Fichiers du bridge que sa pose problème.
Il faudrait éssayer de faire une rechercher dans tout les Fichiers et changer partout ou c'est écrit "Forum" Le nom par défaut du module smf par le nom du module en question. Je pense que sa pourrait peut-être marcher comme sa. Titre: Re : Rewriting amélioré forum smf (titre des posts dans les url) Posté par: stefvar le 27 Octobre 2009 à 11:27:12 Re,
Je ne pense pas qu'il faille aller chercher dans tous les fichiers, juste modifier le code pour la ré-écriture en fonction de tes forums. Si, par exemple ton forum2 est ré-écris d'origine en Forum2-topic-xxx.html, il faudra modifier, toujours par exemple, le code : Citation preg_match_all('#Forum-topic-(\d*).html#', $smfContent, $forum_t, PREG_SET_ORDER); enforeach ($forum_t as $forum1_t){ $forum2_t[0] = str_replace($html_t, $html_ersetzung_t, "".$forum1_t[0].""); $abfrage = "SELECT subject, ID_TOPIC FROM v83_smf_messages WHERE ID_TOPIC = '$forum2_t[0]'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_array($ergebnis)){ $titel_forum_rewrite_t = $row["subject"]; $titel_forum_rewrite_t = str_replace($umlaute, $ersetzung, $titel_forum_rewrite_t); $titel_forum_rewrite_t = preg_replace('#\W#', "-", $titel_forum_rewrite_t); $titel_forum_rewrite_t = preg_replace('#---#', "-", $titel_forum_rewrite_t); $titel_forum_rewrite_t = preg_replace('#--#', "-", $titel_forum_rewrite_t); $titel_forum_fert_t = "Forum-top-"; $titel_forum_fert_t.= "$titel_forum_rewrite_t-"; $titel_forum_fert_t.= $forum2_t[0]; $titel_forum_fert_t.= ".html"; $replace = "#".$forum1_t[0]."(?!\d)#"; $smfContent = preg_replace($replace, $titel_forum_fert_t, $smfContent); } } Citation preg_match_all('#Forum2-topic-(\d*).html#', $smfContent, $forum_t, PREG_SET_ORDER); au niveau du fichier Forum/mx_functions.php sans oublier de dupliquer aussi les lignes au niveau du htaccess.foreach ($forum_t as $forum1_t){ $forum2_t[0] = str_replace($html_t, $html_ersetzung_t, "".$forum1_t[0].""); $abfrage = "SELECT subject, ID_TOPIC FROM v83_smf_messages WHERE ID_TOPIC = '$forum2_t[0]'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_array($ergebnis)){ $titel_forum_rewrite_t = $row["subject"]; $titel_forum_rewrite_t = str_replace($umlaute, $ersetzung, $titel_forum_rewrite_t); $titel_forum_rewrite_t = preg_replace('#\W#', "-", $titel_forum_rewrite_t); $titel_forum_rewrite_t = preg_replace('#---#', "-", $titel_forum_rewrite_t); $titel_forum_rewrite_t = preg_replace('#--#', "-", $titel_forum_rewrite_t); $titel_forum_fert_t = "Forum2-top-"; $titel_forum_fert_t.= "$titel_forum_rewrite_t-"; $titel_forum_fert_t.= $forum2_t[0]; $titel_forum_fert_t.= ".html"; $replace = "#".$forum1_t[0]."(?!\d)#"; $smfContent = preg_replace($replace, $titel_forum_fert_t, $smfContent); } } En bref, su tu as trois modules forums distincts, il faut que tu dupliques d'autant le code ajouté et dans le fichier Forum/mx_functions.php, et dans le htaccess. Sans oublier non plus que si, au niveau des tables elles sont spécifiques à chaque forum, il faudra aussi modifier le code en ce sens ;) Titre: Rewriting amélioré forum smf (titre des posts dans les url) multi forums Résolu Posté par: shorty le 12 Novembre 2009 à 07:28:33 effectivement, c'était bien là qu"il fallait faire la modif.
Pour que sa fonctionne, j'ai du remplacer toutes les valeurs avec Marqués "Forum" par le nom du forum en question. J'éssayerai de compléter ta procédure si j'ai le temps. |