Un comportement de Prestashop 1.5 qui m’a toujours énervé dans l’interface administrateur, c’est son habitude à changer le champ « URL simplifiée » des catégories en cas de modification du titre.
Dès la version 1.6 cela a été modifié avec une case « Forcer la mise à jour des URL simplifiées » que l’on peut désactiver.
Pour les pages produits et catégories
En attendant, voici comment désactiver cette mauvaise manie. Dans /js/admin.js, ligne 54, il suffit de commenter quelques lignes pour vider le contenu de la fonction copy2friendlyURL et ne laisser que return; .
1 2 3 4 5 6 7 8 9 10 11 |
function copy2friendlyURL() { /* $('#link_rewrite_' + id_language).val(str2url($('#name_' + id_language).val().replace(/^[0-9]+\./, ''), 'UTF-8').replace('%', '')); if ($('#friendly-url')) $('#friendly-url').html($('#link_rewrite_' + id_language).val()); // trigger onchange event to use anything binded there $('#link_rewrite_' + id_language).change(); */ return; } |
La fonction copy2friendlyURL est exécutée par une portion de code montrée ci-dessous, mais également dans admin-product.js. Modifier cette fonction à la source impactera les pages d’édition des produits et des catégories.
Uniquement pour les pages produit
Vous vous êtes toujours demandé pourquoi l’URL du produit n’était modifiée que lorsque l’onglet « Référencement » est cliqué ? La réponse est ici dans admin-products.js.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
product_tabs['Seo'] = new function(){ var self = this; this.onReady = function() { copy2friendlyURL(); // Enable writing of the product name when the friendly url field in tab SEO is loaded $('.copy2friendlyUrl').removeAttr('disabled'); displayFlags(languages, id_language, allowEmployeeFormLang); if (display_multishop_checkboxes) ProductMultishop.checkAllSeo(); }; } |
Je n’ai jamais essayé, mais pour impacter uniquement les pages produit je désactiverais les lignes copy2friendlyURL(); et $('.copy2friendlyUrl').removeAttr('disabled');
Uniquement pour les pages catégories
Si vous souhaitez plutôt arrêter la modification automatique des URL sur les catégories, tout en la laissant active pour les produits, c’est ligne 681 que cela se passe. Quatre lignes à commenter.
1 2 3 4 5 6 |
/* $(".copyMeta2friendlyURL").live('keyup change',function(e){ if(!isArrowKey(e)) return copyMeta2friendlyURL() }); */ |
Ce code Javascript/jQuery déclenche la fonction copy2friendlyURL dès qu’un caractère (non flèche) est tapé dans tout champ qui porte la classe « copy2friendlyUrl ». Et devinez qui porte cette classe ? Précisément le champ de titre de la catégorie.
Hello,
Merci pour ce super tuto, ça fonctionne pour mes boutiques presta 2018 et début 2019. Cependant pour mes nouvelles boutiques presta, cette solution ne fonctionne plus.
Aussi, le bouton « Forcer la mise à jour des URL simplifiées » existe pour les produits mais pas pour les catégories :/
Une idée pour ne plus forcer la maj des url catégories pour la version récente de presta ?
Merci d’avance.
Baptiste
Bonjour,
Je ne saurai pas vous répondre pour les URL de catégories. Si vous trouvez une réponse, je suis preneur !
Cordialement