Jump to content

Comment déplacer le "id_product" dans l'url-rewriting


Recommended Posts

Bonsoir,

 

Quelqu'un aurait-il la soluce à mon problème .....  ???

 

 

 

Avec Prestashop, l'url-rewriting transforme:

 

.....://domaine.fr/product.php?id_product=665

en

.....://domaine.fr/665-article-en-vente.html

 

 

Les fichiers qui permettent cela sont à priori:

/classes/link.php  .... et biensûr le .htaccess

peut-être même admin/admincategories.php ; admin/adminproducts.php

 

 

et moi, je veux juste écrire ça (le id à la fin !!!):

.....://domaine.fr/article-en-vente-665.html

 

 

 

l'idéal serait même ça:

.....://domaine.fr/article-en-vente.html

.... pas de soucis, aucun de mes articles ne peut avoir la même url !!

 

 

 

 

et je n'y arrive pas  :-[ .... et il ne me manque que ça avant de passer en "production" ....  :'(

soit je modifie le link.php et je fais mal le .htaccess .... soit l'inverse !!

bref je ne m'en sors pas ....

 

Merci ...

 

 

 

Link to comment
Share on other sites

Bon ben j'avance ...

j'ai réussi à déplacer le id de l'url-rewriting pour les categories .... MAIS

du coup, les formulaires my-account et contact ne sont plus reconnus !  :(

 

Est-ce normal que ces 2 formulaires utilisent la règle de réécriture des catégories  ???

Link to comment
Share on other sites

Il est peut etre possible de modifier l'url rewriting mais c'est un peu à vos risques et périls

 

le fait que ce soit écrit de la forme :

 

domaine.fr/659-nom-de-l-article.html

 

fait que le .htacces va récupérer la première valeur pour l'assigner en id-product.

 

En clair, le .htacces va prendre ce que vous mettez dans l'adresse (domaine.fr/659-nom-de-l-article.html) et va renvoyer sur le serveur une requête (domaine.fr/product.php?id_product=659), c'est ce qu'on appelle l'url rewriting.

(note : il en a que faire du nom de l'article)

 

Donc gérer juste les noms des articles, c'est pas possible. (pretashop fonctionne avec le id_product, si il n'y en a pas, c'est pas bon)

 

Par contre, vous pouvez tenter de faire une adresse du type domaine.fr/nom-de-l-article,659.html

Pour se faire, dans le .htacces, remplacez la ligne

RewriteRule ^([0-9]+)-([a-zA-Z0-9-]*).html(.*)$ product.php?id_product=$1$3 [L,E]

par

RewriteRule ^([a-zA-Z0-9-]*),([0-9]+).html(.*)$ product.php?id_product=$2$3 [L,E]

 

Dans le fichier link.php (lignes 40 à 47)

 

		if (is_object($id_product))
		return ($this->allow == 1)?(__PS_BASE_URI__.intval($id_product->id).'-'.$id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').'.html') : 
		(__PS_BASE_URI__.'product.php?id_product='.intval($id_product->id));
	elseif ($alias)
		return ($this->allow == 1)?(__PS_BASE_URI__.intval($id_product).'-'.$alias.($ean13 ? '-'.$ean13 : '').'.html') : 
		(__PS_BASE_URI__.'product.php?id_product='.intval($id_product));
	else
		return __PS_BASE_URI__.'product.php?id_product='.intval($id_product);

 

remplacez par

 

		if (is_object($id_product))
		return ($this->allow == 1)? ($id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').','.__PS_BASE_URI__.intval($id_product->id).'.html') : 
		(__PS_BASE_URI__.'product.php?id_product='.intval($id_product->id));
	elseif ($alias)
		return ($this->allow == 1)?($alias.($ean13 ? '-'.$ean13 : '').','.__PS_BASE_URI__.intval($id_product).'.html') : 
		(__PS_BASE_URI__.'product.php?id_product='.intval($id_product));
	else
		return __PS_BASE_URI__.'product.php?id_product='.intval($id_product);

 

Ca devrait fonctionner.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...