prosilver Posted December 28, 2010 Share Posted December 28, 2010 Bonsoir,J'ai vu un post pour supprimer la catégorie de l'url de cette manière :cela se passe dans le fichier Link.php à la ligne 41 et 44 du 'getProductLink' public function getProductLink($id_product, $alias = NULL, $category = NULL, $ean13 = NULL, $id_lang = NULL) { if (!isset($this->allow)) $this->allow = 0; if (is_object($id_product)) return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink(intval($id_lang)).(($id_product->category != 'home' AND !empty($id_product->category)) ? $id_product->category.'/' : '').intval($id_product->id).'-'.$id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').'.html') : (_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product->id)); elseif ($alias) return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink(intval($id_lang)).(($category AND $category != 'home') ? ($category.'/') : '').intval($id_product).'-'.$alias.($ean13 ? '-'.$ean13 : '').'.html') : (_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product)); else return _PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product); } Suppression des catégories lignes 41: .(($id_product->category != 'home' AND !empty($id_product->category)) ? $id_product->category.'/' : '') et 44: .(($category AND $category != 'home') ? ($category.'/') : '') Je retrouve donc ceci: public function getProductLink($id_product, $alias = NULL, $category = NULL, $ean13 = NULL, $id_lang = NULL) { if (!isset($this->allow)) $this->allow = 0; if (is_object($id_product)) return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink(intval($id_lang)).intval($id_product->id).'-'.$id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').'.html') : (_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product->id)); elseif ($alias) return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink(intval($id_lang)).intval($id_product).'-'.$alias.($ean13 ? '-'.$ean13 : '').'.html') : (_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product)); else return _PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product); } L'url est maintenant de cette forme: http://www.monsite.com/20-article-du-site.html Je voudrai l'ID du produit à la fin: modif ligne 44return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink(intval($id_lang)).$alias.'-'.intval($id_product).($ean13 ? '-'.$ean13 : '').'.html') : L'url est maintenant: http://www.monsite.com/article-du-site-20.html Pile-poil sauf que je me retrouve avec une belle page 'La page que vous avez demandée n'existe plus'Arffff, c'était bien parti :-S Une petite idée ? Link to comment Share on other sites More sharing options...
juliens Posted January 4, 2011 Share Posted January 4, 2011 Bonjour,il faut mettre à jour le .htaccessRemplacer la ligne : RewriteRule ^([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$1$3 [QSA,L,E] Par : RewriteRule ^([a-zA-Z0-9-]*)\-([0-9]+)\.html(.*)$ /product.php?id_product=$1$3 [QSA,L,E] Je n'ai pas testé mais il me semble que cela doit corrigé ton soucis de "page not found" car tu intervertis les deux parties de l'url (product_id et product_name) Link to comment Share on other sites More sharing options...
prosilver Posted January 4, 2011 Author Share Posted January 4, 2011 Bonjour juliens,c'est presque bon mais là, du coup c'est:Il y a 1 erreur :1. produit introuvableNe faut-il pas changer également les lignes 11 et/ou 12 du .htaccess ? RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$3&isolang;=$1$5 [L,E] RewriteRule ^lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$2&isolang;=$1$4 [L,E] Merci... Link to comment Share on other sites More sharing options...
juliens Posted January 4, 2011 Share Posted January 4, 2011 Les lignes du htaccess que tu évoques sont utilisées quand il y a la langue dans l'url, ce qui n'est pas le cas dans ton exemple.Essaie en utilisant RewriteRule ^([a-zA-Z0-9-]*)\-([0-9]+)\.html(.*)$ /product.php?id_product=$2$3 [QSA,L,E] Je me suis trompé dans le numéro des sous-chaines de l'expression régulière posté initialementDans la nouvelle règle de rewrite : $1 = le nom de l'article avec les tirets$2 = le numéro de l'article$3 = les paramètres d'url additionnels Link to comment Share on other sites More sharing options...
prosilver Posted January 4, 2011 Author Share Posted January 4, 2011 Re,c'est bon, c'est bien cela. Merci juliens Je suppose que les catégories etc.. c'est la même manip ? Link to comment Share on other sites More sharing options...
prosilver Posted January 4, 2011 Author Share Posted January 4, 2011 Allez, un p'tit P pour product devant l'id du produit,un p'tit C pour category devant l'id de la catégorieet ça me va bien,Merci encore.......... :-) Link to comment Share on other sites More sharing options...
juliens Posted January 4, 2011 Share Posted January 4, 2011 C'est le même principe pour les autres rewrite rules.Dans une expression régulière les sous-chaines sont entre parenthèses et chaque sous-chaine peut être récupérée avec son numéro $n qui commence à $1Content d'avoir pu t'aider.A+ Link to comment Share on other sites More sharing options...
manucc Posted April 7, 2011 Share Posted April 7, 2011 Bonsoir,Est-il possible de supprimer les id dans la rééecriture d'URL ?De mon côté, je l'ai fais pour la partie CMS (modification classe Link.php et htaccess) mais ensuite je me retrouve avec la page catégorie qui s'affiche au lieu de la page CMS...Un idée ?Merci de votre aide. Link to comment Share on other sites More sharing options...
cobolian Posted April 18, 2011 Share Posted April 18, 2011 Les IDs sont utilisés pour retrouver l'article en question. A moins de développer un bigniou pour le retrouver (et c'est pas si simple) ce n'est pas possible. Link to comment Share on other sites More sharing options...
doodu94 Posted June 9, 2011 Share Posted June 9, 2011 La suppression de ID categorie et ID Produit dans l'url améliore vraiment le référencement ? Link to comment Share on other sites More sharing options...
Dragonatei Posted June 9, 2011 Share Posted June 9, 2011 Pour moi la réponse est oui ! Link to comment Share on other sites More sharing options...
Yolaix Posted June 18, 2011 Share Posted June 18, 2011 Bonjour,Sujet qui traite exactement de ce que j'étais en train de tenter de mettre en place, ça tombe bien...Je bloque sur la modification du htaccess sur PS 1.4.2.5J'ai ça d'origine, et je n'arrive pas à m'en sortir malgré vos bons conseils... RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$1 [QSA,L] RewriteRule ^[a-zA-Z0-9-]*/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$1 [QSA,L] Merci à vous ! Link to comment Share on other sites More sharing options...
Recommended Posts