Renommez automatiquement les références de vos produits sur Prestashop

Renommez automatiquement les références produits

La référence produit de Prestashop permet son identification par une chaine de caractères. Cette référence sert en interne et sera affichée au client sur la fiche produit (ne pas mettre le code fournisseur dedans).

ref
Avoir des références à jour permet d’identifier un produit, lorsque vous avez des échanges avec vos clients, vos fournisseurs, en cas d'inventaire...

Utilisez le Script

Ce script permet de mettre à jour les références produits (produit et déclinaison) afin qu’elles soient uniques.

Télécharger le script pour Prestashop, mettre le dossier “scripts” dans votre dossier “modules” et exécuter l’url :

http://www.votresite.com/modules/scripts/rename_references.php

Tous les produits seront renommés comme ceci :
 
refP-IDproduit  – Pour les produits simples.
refD-IDdéclinaison – Pour les déclinaisons.
 
Ce qui permet d’assurer que l’information soit bien unique.
 
Vous pouvez modifier directement dans le script ce qui précede le numéro du compteur (ID) afin de l’adapter à votre mode de fonctionnement.
 
$prefix_ref = ‘cequevousvoulez-‘;
$prefix_refd = ‘cequevousvoulez-‘;
 
Utilisez toujours en préfixe “ref- ” ou “refD- ” pour différencier un produit principal d’une déclinaison, puis ensuite mettez l’id du produit + (-1,-2,-3,-4) si vous avez par exemple 4 déclinaisons.
 
 
 
 

Pour ceux qui préfèrent le code php :

				
					<?php

/*
* 21.01.21 - Tiri | TUTO REFERENCE 01
* Permet de re-définir des références uniques pour tous les articles du shop
* Pour cela mettre le dossier scripts dans votre dossier modules et exécuter l’url suivante :
* http://www.votresite.com/modules/scripts/rename_references.php
 */

require('../../config/config.inc.php');

$prefix_ref = 'refP-';
$prefix_refd = 'refD-';
$count = 0;

$products = Db::getInstance()->executeS('SELECT `id_product` FROM '._DB_PREFIX_.'product');
foreach($products as $p){
    Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'product
                                SET `reference`="'.pSQL($prefix_ref.$p['id_product']).'"
                                WHERE `id_product`="'.pSQL($p['id_product']).'"');
    $count++;
}
$products_attributes = Db::getInstance()->executeS('SELECT `id_product_attribute` FROM '._DB_PREFIX_.'product_attribute');
foreach($products_attributes as $pa){
    Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'product_attribute
                                SET `reference`="'.pSQL($prefix_refd.$pa['id_product_attribute']).'"
                                WHERE `id_product_attribute`="'.pSQL($pa['id_product_attribute']).'"');
    $count++;
}

echo 'Félicitation <strong>'.$count.'</strong> références mises à jour !';

?>
				
			

Lancez le script via votre navigateur

La mise à jour des références s’est bien déroulée
Hourra, le script a renommé vos références !

Quand vous avez de nouveaux produits, vous pouvez relancer le script (mettez l’adresse du lien dans vos favoris).

Les références resteront les mêmes pour les anciens produits et les nouveaux seront automatiquement complétés.

 

Conclusion

Je me sers souvent de ce script pour mes références. Cette méthode fait gagner du temps et permet d’avoir des codes articles organisés.

Pour aller plus loin et pour ceux interessé par PHP, voici un petit lien sympa. N’hésitez pas à fouiller… Par exemple la !

 
 
 

⚠️ Si vous avez une erreur 500, il est possible que votre serveur n’ai pas assez de puissance pour exécuter le traitement sur tous vos produits.

Pour cela il peut-être nécessaire d’augmenter les valeurs « max_excution_time » et « memory_limit » de PHP (consulter votre hébergeur).

5/5

Thierry Laval

Je suis un développeur web qui cherche à résoudre les problèmes du monde réel. J'ai la passion d'apprendre et de partager mes connaissances avec les autres, aussi publiquement que possible. Retrouvez-moi sur thierrylaval.dev

Thierry Laval has 110 posts and counting. See all posts by Thierry Laval