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

Jump to content

Photo

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

#1

Posted 28 December 2010 - 11:11 PM

prosilver

    PrestaShop Apprentice

  • Members
  • PipPip
  • 88 Active Posts
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 --> 1.6.


#2

Posted 04 January 2011 - 10:53 AM

juliens

    PrestaShop Apprentice

  • Members
  • PipPip
  • 232 Active Posts
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)

#3

Posted 04 January 2011 - 02:57 PM

prosilver

    PrestaShop Apprentice

  • Members
  • PipPip
  • 88 Active Posts
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 --> 1.6.


#4

Posted 04 January 2011 - 03:17 PM

juliens

    PrestaShop Apprentice

  • Members
  • PipPip
  • 232 Active Posts
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

#5

Posted 04 January 2011 - 03:37 PM

prosilver

    PrestaShop Apprentice

  • Members
  • PipPip
  • 88 Active Posts
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 --> 1.6.


#6

Posted 04 January 2011 - 05:17 PM

prosilver

    PrestaShop Apprentice

  • Members
  • PipPip
  • 88 Active Posts
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 --> 1.6.


#7

Posted 04 January 2011 - 05:53 PM

juliens

    PrestaShop Apprentice

  • Members
  • PipPip
  • 232 Active Posts
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+

#8

Posted 07 April 2011 - 03:55 PM

manucc

    PrestaShop Newbie

  • Members
  • Pip
  • 3 Active Posts
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.

#9

Posted 18 April 2011 - 01:26 PM

cobolian

    PrestaShop Apprentice

  • Members
  • PipPip
  • 186 Active Posts
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.

#10

Posted 09 June 2011 - 02:45 PM

doodu94

    PrestaShop Addict

  • Members
  • PipPipPip
  • 780 Active Posts
La suppression de ID categorie et ID Produit dans l'url améliore vraiment le référencement ?
Prestashop 1.4.9

#11

Posted 09 June 2011 - 05:08 PM

Dragonatei

    PrestaShop Apprentice

  • Members
  • PipPip
  • 339 Active Posts
Pour moi la réponse est oui !

#12

Posted 18 June 2011 - 11:50 AM

Yolaix

    PrestaShop Newbie

  • Members
  • Pip
  • 4 Active Posts
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

Cookies help us deliver our services. By using our services, you agree to use our cookies.     Learn more