PrestashopLe job de dév

Renommez automatiquement les références produits avec un script 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