Vote for v1.5 Fixes

PrestaShop Forum: Build a free online shop. Count on the Community!

The best place in the world to ask questions about PrestaShop and get advice from our passionate community!

PrestaShop Forum: Build a free online shop. Count on the Community!

Jump to content

Photo

[Résolu] Supprimer la catégorie de l'url rewriting ET id product en fin d'url ?


  • Please log in to reply
11 replies to this topic
prosilver

    PrestaShop Apprentice

  • Members
  • PipPip
  • 77 posts

Posted 28 December 2010 - 11:11 PM

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 44
return ($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 ?

--> ... Et sept ans plus tard, enfin chez Dmoz ! :rolleyes:
PrestaShop 1.3.7


juliens

    PrestaShop Apprentice

  • Members
  • PipPip
  • 232 posts

Posted 04 January 2011 - 10:53 AM

Bonjour,

il faut mettre à jour le .htaccess

Remplacer 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)

prosilver

    PrestaShop Apprentice

  • Members
  • PipPip
  • 77 posts

Posted 04 January 2011 - 02:57 PM

Bonjour juliens,

c'est presque bon mais là, du coup c'est:
Il y a 1 erreur :
1. produit introuvable


Ne 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...

--> ... Et sept ans plus tard, enfin chez Dmoz ! :rolleyes:
PrestaShop 1.3.7


juliens

    PrestaShop Apprentice

  • Members
  • PipPip
  • 232 posts

Posted 04 January 2011 - 03:17 PM

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é initialement

Dans 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

prosilver

    PrestaShop Apprentice

  • Members
  • PipPip
  • 77 posts

Posted 04 January 2011 - 03:37 PM

Re,
c'est bon, c'est bien cela. Merci juliens :)
Je suppose que les catégories etc.. c'est la même manip ?

--> ... Et sept ans plus tard, enfin chez Dmoz ! :rolleyes:
PrestaShop 1.3.7


prosilver

    PrestaShop Apprentice

  • Members
  • PipPip
  • 77 posts

Posted 04 January 2011 - 05:17 PM

Allez, un p'tit P pour product devant l'id du produit,
un p'tit C pour category devant l'id de la catégorie
et ça me va bien,
Merci encore.......... :-)

--> ... Et sept ans plus tard, enfin chez Dmoz ! :rolleyes:
PrestaShop 1.3.7


juliens

    PrestaShop Apprentice

  • Members
  • PipPip
  • 232 posts

Posted 04 January 2011 - 05:53 PM

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 à $1
Content d'avoir pu t'aider.
A+

manucc

    PrestaShop Newbie

  • Members
  • Pip
  • 3 posts

Posted 07 April 2011 - 03:55 PM

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.

cobolian

    PrestaShop Apprentice

  • Members
  • PipPip
  • 186 posts

Posted 18 April 2011 - 01:26 PM

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.

doodu94

    PrestaShop Addict

  • Members
  • PipPipPip
  • 780 posts

Posted 09 June 2011 - 02:45 PM

La suppression de ID categorie et ID Produit dans l'url améliore vraiment le référencement ?
Prestashop 1.4.9

Dragonatei

    PrestaShop Apprentice

  • Members
  • PipPip
  • 339 posts

Posted 09 June 2011 - 05:08 PM

Pour moi la réponse est oui !

Yolaix

    PrestaShop Newbie

  • Members
  • Pip
  • 4 posts

Posted 18 June 2011 - 11:50 AM

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.5

J'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 !
Prestashop v1.4.2.5




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users