Jump to content

Import de produits, générer les URLs vers les images en fonction de la référence produit


Recommended Posts

Bonjour,

 

Je travaille actuellement sur un Prestashop et je suis particulièrement intéressé par la fonction d'import de produits via CSV.

 

Toutefois, j'ai une problèmatique.

 

J'ai nommé toutes mes images en fonction de la référence du produit associé.

 

J'ai par-exemple un produit portant la référence AFF001. Les images correspondant à ce produit portent le nom de fichier aff001-1.jpg, aff001-2.jpg, ...

 

Dans le fichier d'import, je souhaiterais créer une boucle PHP afin que pour chaque produit disposant d'une référence, je cherche s'il existe des images et si oui, les ajouter au produit...

 

Voici le type de code auquel j'ai pensé. Toutefois, je ne sais pas où l'intégrer et s'il est correct...

$product_reference = ... // Nom de la variable contenant la référence du produit ?
$prestashop_absolute_url = .. // URL du prestashop
$images_path = 'img/p/' // Dossier contenant mes images produit
$images_list = array(); // Array qui contiendra les éventuelles images trouvées
$i = 1;
$do_while = true;
while($do_while) {
  $image_path_filename = $images_path.strtolower($product_reference).'-'.$i.'.jpg';
  if(file_exists($image_path_filename)) {
    $images_list[] = $prestashop_absolute_url.$image_path_filename ;
    $i++;
  }
  // Pas d'image trouvée ...
  else {
    $do_while = false;
  }
}
$images_list = explode(',', $images_list); // Liste de toutes les URLs des images sous forme d'une chaîne de caractère compatible avec le fichier d'import CSV

En fonction de l'emplacement de cette portion de code, je devrais sans doute modifier ma variable $images_path (ajouter un ou plusieurs '../')

D'avance, merci pour votre aide.

 

pH

Edited by Pierre-Henri (see edit history)
Link to comment
Share on other sites

Je me réponds à moi-même car j'ai terminé et ça fonctionne :

// Images des produits en fonction de la référence du produit - BOF
$prestashop_absolute_url = _PS_BASE_URL_.__PS_BASE_URI__;
$images_path = 'img/p/';
$product_reference = $info['reference'];
$images_list = array();
$i = 1;
$do_while = true;
while($do_while) {
  $image_path_filename = $images_path.strtolower($product_reference).'-'.$i.'.jpg';
  if(file_exists('../'.$image_path_filename)) {
    $images_list[] = $prestashop_absolute_url.$image_path_filename ;
    $i++;
  }
  // Pas d'image trouvée ...
  else {
    $do_while = false;
  }
}
if(sizeof($images_list) > 0) {
  $product->image = $images_list; // Ecrase le tableau contenant les URLs des images (suplante la valeur de la colonne Image URLs)
}
// Images des produits en fonction de la référence du produit - EOF

Cette portion de code a été placée dans le fichier controllers/admin/AdminImportController.php, ligne 1713

 

Toutefois, je recontre un souci que je n'avais pas juste avant que ça fonctionne ... L'import ne se termine pas car il semble durer trop longtemps (il n'y a que 12 produits pour mes tests).

 

Auriez-vous une idée de ce qui peut clocher ?

 

D'avance, merci pour votre aide.

 

pH

Link to comment
Share on other sites

Hello, ca m'a l'air d'être super intéressant ca... je vais tester tes modifications car je recherche également à gérer les images produits via csv. Ton pb pourrait venir de la configuration de ton serveur. Je teste et je te dis si ca marche de mon coté, ce que j'aimerais faire pour ma part serait de mettre le nom du produit au lieu de la référence car il parait que google scan les url des images.

Edited by Alexandre-KM (see edit history)
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...