Jump to content

Configuration des URL sur produits avec déclinaisons


Recommended Posts

Je travaille actuellement sur un site sous Prestashop 1.7.7.4, et j'ai un souci au niveau de la configuration des URLs de mes produits.

Depuis les pages qui affichent mes produits sous forme de Card, lorsque je clique sur "Voir le produit" depuis une de ces Cards, l'URL de mon produit s'affiche de la manière suivante : nom du site + catégorie + produit + déclinaison.

Dans un objectif de simplification de mes URLs, j'aimerais que depuis ces pages d'affichage de produits, lorsqu'on clique sur "Voir le produit", cela affiche l'URL basique du produit et non l'URL complète avec la déclinaison.

Jusqu'ici, j'ai tenté une règle de réécriture dans mon fichier .htaccess sans succès, j'ai également trouvé dans mon fichier miniature product.tpl le code suivant :

<a href="{$product.url}" class="btn btn-view btn-primary"> {if $category && is_object($category)} {if $category->id_category == 23} {l s='Voir l\'atelier >' d='Shop.Theme.Actions'} {else} {l s='Voir le produit' d='Shop.Theme.Actions'} {l s='>' d='Shop.Theme.Actions'} {/if} {elseif $category && is_array($category)} {if $category["id_category"] == 23} {l s='Voir l\'atelier >' d='Shop.Theme.Actions'} {else} {l s='Voir le produit' d='Shop.Theme.Actions'} {l s='>' d='Shop.Theme.Actions'} {/if} {else} {l s='Voir le produit' d='Shop.Theme.Actions'} {l s='>' d='Shop.Theme.Actions'} {/if} </a>

Je vois que ce code récupère l'URL de base du produit, de ce fait je ne comprends pas comment mes produits peuvent continuer à s'ouvrir avec des URLs spécifiques aux déclinaisons du produit. Peux-tu m'aider ?

Link to comment
Share on other sites

  • 3 weeks later...
Posted (edited)
On 8/2/2024 at 11:25 AM, Mediacom87 said:

Bonjour,

Je me permets de re-citer ta réponse. En effet, au 2 août lorsque j'ai réalisé la modification proposée dans ton article, tout s'est bien passé et je n'avais plus de problème lié à l'affichage des déclinaisons des produits dans les URLs.

Cependant, je viens de voir qu'à ce jour, tous les produits sur le site sur lequel je travaille qui ont de nouveau ce problème. J'ai revérifié mon fichier /templates/catalog/_partials/miniatures/product.tpl où tous les appels à l'URL du produit sont bien sous la forme $product.canonical_url. Par contre, j'ai remarqué que mon fichier /templates/catalog/product.tpl avait encore un appel à $product.product_url, que j'ai tenté de changer par $product.canonical_url mais cela ne change rien...

EDIT : J'ai même tenté une modification de mon /templates/catalog/_partials/miniatures/product.tpl dans le thème parent... 

Aurais-tu une idée ? Merci d'avance 🙂

Edited by ambreramos (see edit history)
Link to comment
Share on other sites

1 hour ago, ambreramos said:

Bonjour,

Je me permets de re-citer ta réponse. En effet, au 2 août lorsque j'ai réalisé la modification proposée dans ton article, tout s'est bien passé et je n'avais plus de problème lié à l'affichage des déclinaisons des produits dans les URLs.

Cependant, je viens de voir qu'à ce jour, tous les produits sur le site sur lequel je travaille qui ont de nouveau ce problème. J'ai revérifié mon fichier /templates/catalog/_partials/miniatures/product.tpl où tous les appels à l'URL du produit sont bien sous la forme $product.canonical_url. Par contre, j'ai remarqué que mon fichier /templates/catalog/product.tpl avait encore un appel à $product.product_url, que j'ai tenté de changer par $product.canonical_url mais cela ne change rien...

EDIT : J'ai même tenté une modification de mon /templates/catalog/_partials/miniatures/product.tpl dans le thème parent... 

Aurais-tu une idée ? Merci d'avance 🙂

J'ai trouvé une solution ! Dans le fichier controllers/front/ProductController.php, on remarque que dans la génération des URLs de produits, l'attribut des produits est toujours fourni. J'ai donc remplacé cette partie : 

'product_url' => $this->context->link->getProductLink(
                $product['id_product'],
                null,
                null,
                null,
                $this->context->language->id,
                null,
                $product['id_product_attribute'],
                false,
                false,
                true,
                $isPreview ? ['preview' => '1'] : []
            )

par ceci :

'product_url' => $this->context->link->getProductLink(
                $product['id_product'],
                null,
                null,
                null,
                $this->context->language->id,
                null,
                null,
                false,
                false,
                true,
                $isPreview ? ['preview' => '1'] : []
            ),
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...