Jump to content

[Résolu] Import produits ne génére pas l'image dans la fiche produit...


IC INDUSTRIE

Recommended Posts

Bonjour,
j'essaie en ce moment l'import de fichier csv, pour les produits dans un premier temps avec le format défini dans le BO.
je dirais presque parfait sauf :
la photo de sur url donnée est bien reçu et récupéré, la photo idem, les miniautures généré mais...quand je vais sur le produit coté admin ou boutique : PAS DE PHOTOS.....

Si qq'un à une petite aide, ou une piste je suis preneur.
Si ca marche, je vais écrire un petit outils à installer sur le pc, pour céer les fiches produits (sera ecrit en c#),je vais étudier la possibilité de se connecter à une base MySQL (ca marche parfaitement en local)

si vous avez des "désidératas" pour ce petit soft, j'etudie tout.

Dominique.

Link to comment
Share on other sites

[Résolu par contournement]
Allez, je me réponds à moi même :
lors de l'importation, le ID du produit n'est pas "obligatoire", il semble que le lien ne se fait pas si on laisse cette colonne à blanc.
Si on met un identifiant (numérique) : pas de problème tout fonctionne parfaitement

Link to comment
Share on other sites

C'est ce que j'ai écrit : [RESOLU par contournement] car la solution n'est pas parfaite :
elle oblige à gérer en local les id des produits, je ne sais pas ce qui se passe si on essaye d'envoyer un produit déjà existant (remplacement ou rejet?)

Sinon je le met ou le résolu?

Cordialement
Dominique

Link to comment
Share on other sites

Bonsoir,

Je me permets de venir poser ma question ici car elle paraît correspondre au problème que je rencontre.

J'ai renseigné l'url de mes images dans mon csv : http://www.monsite.fr/img/p/image.jpg.

L'import se passe bien mais les images ne sont pas associées à mes produits. Pour tout dire, les images n'apparaissent nulle part.

En cherchant un peu, je constate qu'après insertion directe par le BO, les images sont renommées à l'ID du produit.

Donc mes questions sont les suivantes :

1. Dois je renommer toutes mes images à l'ID Produit ? Auquel cas j'ai aussi vite fait de les insérer produit par produit sur le BO...

2. Est-ce que quelqu'un peut m'expliquer comment fonctionne la relation image/produit ? Renseigner l'url dans le csv, oui mais comment ?

Pour information, ma boutique compte près de 10 000 produits, de quoi se poser sérieusement des questions lorsqu'il s'agit de limiter les manipulations répétitives.

Merci, par avance, de vos réponses :)

Marie

Link to comment
Share on other sites

En fait je pense qu'il y a un léger bugg dans l'intégration des csv.
Après exploration de la base de données, je pense que si l'ID (colonne N°1) de la fiche produit n'est pas renseignée, la composition du lien image dans la base de donnée reste à qq chose comme 0-1, 0-2 qq soit le produit.
La solution que j'ai trouvée est de systèmatiquement remplir la colonne ID avec un compteur par exemple.
je suis en cours de codage d'un petit soft qui permettra de gérer rapidement les produits sur PC....
Soit en connexion directe sur la base Mysql (si votre hébergeur le permet pour info j'ai testé cette apm chez AMEN c'est ok) soit dans un premier temps en générant les fichiers csv de manière cohérente.

Si vous avez des demandes, n'hesitez pas je regarde comment les intégrer.

Bien sur, tout cela sera en Open Source, mais en C# avec une version compilée, sur base de données SQLEXPRESS

Bonsoir.

Link to comment
Share on other sites

Bonjour,
j'ai appliqué à la lettre les conseils trouvés sur le forum (et ceux fournis par Marc, merci si il se reconnaît) pour l'import de produits, j'ai fait une première tentative pour comprendre le principe et ensuite j'ai recommencé avec 4 articles. Tout marche nickel sauf pour les images des produits. Là, je ne sais pas trop comment m'y prendre: " il faut se servir de "l'identifiant" "id" dans admin outil import ". J'ai cherché sur le forum mais c'est pas très clair.
je dois avoir l'image déjà prête dans le dossier /img/p? si c'est le cas, que dois-je mettre dans la colonne "URL de l'image" ? est ce que par exemple la procédure suivante est la bonne :
1.j'ai l'image qui va bien nommée photo1, je l'upload dans le fichier/img/p
2. je remplis mes lignes et colonnes de mon tableur avec dans la colonne"URL de l'image" /img/p/photo1.gif
3.export csv
4.import csv dans l'admin de presta
Mes produits n'ont pas encore d'identifiants puisque je ne les ai pas encore importés. A moins que je puisse assigner un identifiant a chaque produit (colonne id, 101,102,103 etc.), mais à ce moment là qu'est ce qui correspond dans la colonne "URL de l'image" ? dois je renommer mes photos par 101.gif, 102.gif, 103.gif? pour que ça colle?
Je suis presque au bout de ma boutique, il ne me manque plus que ça pour que ça tourne.
Merci d'avance si quelqu'un a une piste pour m'aider.

Link to comment
Share on other sites

Ok, vu,
tu n'as pas assigné d'identifiant et comme je le dis plus haut : c'est un bug, il faut mettre un identifiant, et chaque photo que tu "inscris en url", portera l'identifiant donné....
attention l'identifiant est un numérique,...

Si tu patientes encore qq jours, je sors un soft pour préparer tes produits sur ton pc...

Link to comment
Share on other sites

J'ai suivi tous les conseil pour l'import de produits et ça marche bien. La dernière petite chose que je voudrais savoir: quelle est la syntaxe exacte pour la colonne "URL de l'image"? Est ce que le /Presta/img/numero_de_l_image_identique_à_ID.jpg" est utile ou bien juste "numero_de_l_image_identique_à_ID.jpg" est suffisant?

Link to comment
Share on other sites

Ok, ça yest je l'ai. Merci et encore désolé si parfois je suis un peu mou du bulbe. ça avance bien ton soft? Si je peux aider à faire quelque chose je serai le premier ravi de pouvoir mettre la main à la pâte mais je suis zero programmeur. Il parâit pas mal graphik, si je peux être utile, n'hésites pas. Merci encore

Link to comment
Share on other sites

merci oui ca avance :
pour les tables :
produits, attributs et categorie, tout fonctionne en mode table : ajout suppressions modif.
pour les catégorie j'ai réalisé une sorte treeview qui permet de copier / déplacer / dupliquer des catégorie, je bosse les fiches produit : présentation en fiche à fiche avec recherche et liaison sur le treeview...
je pense avoir une bêta avant vendredi....
Pour le moment, sur demande du forum, je bosse sur le mode déconnecté : génération de csv, pas en connexion directe en base..

Link to comment
Share on other sites

Bonsoir
Effectivement il faut se servir de l'identifiant pour que l'import d'image fonctionne c'est un bug reporté ici
http://www.prestashop.com/bug_tracker/view/749/

Mais l ' ID ou identifiant ne sert pas que pour cela
Je ne sais pas si vous avez remarqué si vous importez un article qui existe déjà sur la boutique sans vous servir de l ' ID l'article sera ajouté une deuxième fois ,
par contre si vous mettez le même id que celui qui existe déjà pour le produit il modifiera ce produit.

J'aurais préféré la même chose mais avec le champ "nom" qui de plus lui est obligatoire

Je me réjouis de voir e soft de IC INDUSTRIE en espérant qu'il pourra importer un fichier csv ou txt car tant que je n'ai pas un système d'import valable je ne sais pas commencer avec PS

Link to comment
Share on other sites

Bonjour
Je suppose que la question m'est adressée.
Oui j'ai une gestion de stock (EBP) qui est le point de référence tout article qui entre ou qui sort passe d'abord par EBP et tous les jours en fin de journée je fais un export en .txt des articles modifier,vendu ou acheté de la journée et j'exporte vers ma boutique en ligne toujours une creloaded puisque pour le moment je ne sais pas le faire avec PrestaShop :down:
Cela représente tout de même entre 50 et 100 articles par jour.

Link to comment
Share on other sites

Bonjour,

J'ai un soucis avec les imports d'image dans le csv... j'ai beau mettre un ID pour le produit, rien a faire j'ai droit a un : < Le "produits" (ID X) ne peux être enregistré >, j'ai essayer plusieur chiffre, 2, 10, 100, a chaque fois il me met le message d'erreur.

Y a t-il des ID specifique ou l'on peut metre n'importe quel chiffre ?? J'avoue que je comprend pas trop la ...

Merci

Link to comment
Share on other sites

Re, bon j'ai l'impression que ce n'est pas l'ID client qui merde mais l'import des URL des images, comment je fais pour mettre plusieurs image pour un produit ?

La syntaxe est bien ????? : ;"http://site-web.fr/image/produit01/image01.jpg,http://site-web.fr/image/produit02/image02.jpg,http://site-web.fr/image/produit03/image03.jpg";

Je m'arrache les cheveux la

Link to comment
Share on other sites

Ok, merci d'avoir tester, c'est cool !

J'ai pas mis la vrai adresse des images car l'adresse etait assez longue, du coup j'ai mi une factice, je pensais que tu regarderais juste la structure du CSV ;)

Bon deja si ca marche chez toi bonne nouvelle ! faut que je regarde ce qui cloche chez moi.

J'ai 2 ptites question cependant :

En ID on peux t-on mettre ce que l'on veux comme chiffre ?

Pour les images, est ce que je peux en mettre plusieurs d'affilées ? Il faut bien séparer les adresses par des virgules ?

Merci !

Link to comment
Share on other sites

Oui, j'ai répondu un peu vite car j'avais aussi soulevé ce bug.... très génant au passage
il faut utiliser le ID, mais dans le cas en cours, ce n'est pas le problème.
je suis un peu déconnecté car en plein dans mon soft de préparation des articles/cat/atributs...
là c'est moi qui gère l'id en automatique..

Link to comment
Share on other sites

Pas d'id pas d'images
Soit tu le gère en automatique et tu fais les images après

ou alors tu peux imposer un ID même à la 1er importation :)

n'oublie pas aussi que sans id un produit existant sur la boutique est créé une 2eme fois avec le même id il est modifié
ce problème d'id me gène fortement aussi j'aurais préféré sur le "nom" mais .....

Link to comment
Share on other sites

Bonsoir

La solution :


DANS /admin/tabs/AdminImport.php

FONCTION public function productImport()

CHERCHER ET DEPLACER

              if (isset($product->image) AND is_array($product->image) and sizeof($product->image))
              {
                  foreach ($product->image AS $key => $url)
                  {
                      $image = new Image();
                      $image->id_product = intval($product->id);
                      $image->position = Image::getHighestPosition($product->id) + 1;
                      $image->cover = !$key ? true : false;
                      $image->legend = self::createMultiLangField($product->name[1]);
                      if ($image->validateFields(UNFRIENDLY_ERROR) AND $image->validateFieldsLang(UNFRIENDLY_ERROR))
                          if ($image->add())
                              self::copyImg($product->id, $image->id, $url);
                          else
                              $this->_warnings[] = mysql_error().' '.$image->legend[1].(isset($image->id_product) ? ' ('.$image->id_product.')' : '').' '.Tools::displayError('cannot be saved');
                  }
            }



APRES

          $res = false;
          if ($product->validateFields(UNFRIENDLY_ERROR) AND $product->validateFieldsLang(UNFRIENDLY_ERROR))
          {
              // If id product AND id product already in base, trying to update
              if ($product->id AND $product->productExists(intval($product->id)))
                  $res = $product->update();
              // If no id_product or update failed
              if (!$res)
                  $res = $product->add();
          }
          // If both failed, mysql error
          if (!$res)
              $this->_errors[] = mysql_error().' '.$info['name'].(isset($info['id']) ? ' (ID '.$info['id'].')' : '').' '.Tools::displayError('cannot be saved');
          else
          { 



Et hop l'import de nouveaux produits fonctionne avec des images.

Link to comment
Share on other sites

Oh merci je vais tester aurais-tu une solution aussi pour éviter qu'un produit qui existe déjà dans la boutique modifie ce produit lors de l'import (actuellement sans id il l'ajoute) quand par exemple il porte le même "nom" puisque ce champs est obligatoire

Merci

Link to comment
Share on other sites

Oui, merci pour ton aide. Donc, à la lettre j'ai suivi tes conseils mais non, toujours pas d'images donc, je vais refaire une install' de presta, une bdd neuve, le tout sur un autre nom de domaine (tout tout neuf donc) et ensuite je réessaye ta méthode.

je m'accroche quand même, puisque d'autres y sont parvenus.

Link to comment
Share on other sites

Bonjour,

Alors Nom du produit obligatoire, car il en faut bien un pour avoir un champs au moins, obligatoire par défaut pour créer un produit et c'est un champs obligatoire un peu partout dans le BO.

Pourquoi le champ ID et pas le nom pour une mise à jour. La plupart des bases de données doivent se baser sur des identifiants uniques et d'autre part deux produits peuvent avoir exactement le même nom dans une boutique et cela rallongerait le temps de traitement de l'import, les comparaisons alphanumériques, pas bien.

Pour l'id obligatoire pour importer une photo, bug ou pas bug...c'est vrai que c'est étonnant. [EDIT]La correction de PShopExpert a été apportée dans le trunk pour la prochaine version[/EDIT](reste le bug des miniatures du Back office ok mais bon le front prend la bonne photo)

Sinon c'est bien une url qui est demandée. PS est forcement sur un serveur web et donc il doit pouvoir accéder à sa propre url ou une url externe dans le cas d'un import ebay par exemple.

test.csv

Link to comment
Share on other sites

J'ai bien compris le pourquoi du comment. Si le front prennait ne serait ce que la bonne photo, j'aurai atteint mon but (j'ai une patience infinie, j'ai du essayer environ 250 façons différentes, pour moi cela relève du bug majeur). Autrement, ce n'est pas important que dans le back il n'y ait pas de miniature (dans mon cas, je précise bien).

Link to comment
Share on other sites

Merci pour ces précisions et deux questions me viennent à l'esprit

Ne serait-il pas possible de choisir qui est le "maître" pour l'import id ou nom

ou tout simplement un id alphanumérique ce qui solutionnerait pas mal de problèmes , je suppose que d'autre comme moi on un "nom" unique donné par une gestion de stock

Link to comment
Share on other sites


Mes produits n'ont pas encore d'identifiants puisque je ne les ai pas encore importés. A moins que je puisse assigner un identifiant a chaque produit (colonne id, 101,102,103 etc.)


C'est bien le problème il ne sont pas encore importés, assignez des identifiants 1,2,4,5,99,655,44,45,656....
mais à ce moment là qu'est ce qui correspond dans la colonne "URL de l'image" ? dois je renommer mes photos par 101.gif, 102.gif, 103.gif? pour que ça colle?


Une url c'est une adresse !

42;nom;http://www.google.com/intl/fr_ALL/images/logo.gif, http://www.prestashop.com/images/en/logo-prestashop.png, http://monsite.cn/img/p/peuimporte.jpg, http://127.0.0.1/PS/img/p/fr.jpg;
Link to comment
Share on other sites

oui, je suis bien d'accord, j'ai bien fait tout ce qu'on m'a dit, vérifié, re re vérifié. Parce que depuis le 25/01, mon csv a évolué. Mais toujours pas d'images en front. Désolé de vous donner du fil à retordre.
Reprenons : l'id est assignée (numérique), j'indique http://monsite.cn/photo1.jpg, j'importe, tous les champs vont bien (prix, tva, decription courte, longue, catégorie, etc.). Mais pas d'image. Juste un carré bleu avec un ? dedans. Mon dossier image n'est pas vide (c'est idiot mais j'ai vérifié quand même on ne sait jamais)

Link to comment
Share on other sites

Bonjour,

j'ai dit une bêtise hier soir, le code que j'ai fourni est bon mais dans la colonne image il faut indiquer :

../repertoireimages/monimage012345.jpg

(votre répertoire est donc http://www.votreboutique.com/repertoireimages)

Cela fonctionne mieux que les urls complètes car plus rapide à traiter par le serveur.

Le code de la modification est en page 3 de ce post.

Link to comment
Share on other sites

Aussitot lu, aussitot installé (merci Parallels Desktop). C'est terrible, un préparateur de csv, voilà qui va faciliter la vie de beaucoup d'entre nous.
Merci Marc pour cette trouvaille.
A Propos, "Import produits ne génére pas l’image dans la fiche produit…" résolu grâce au forum, à Marc, Team Prestashop et Pshopexpert pour l'inversion dans le fichier AdminImport.php et à ses nombreux conseils.

Link to comment
Share on other sites

  • 3 weeks later...
  • 1 year later...

DANS /admin/tabs/AdminImport.php

FONCTION public function productImport()

CHERCHER ET DEPLACER

              if (isset($product->image) AND is_array($product->image) and sizeof($product->image))
              {
                  foreach ($product->image AS $key => $url)
                  {
                      $image = new Image();
                      $image->id_product = intval($product->id);
                      $image->position = Image::getHighestPosition($product->id) + 1;
                      $image->cover = !$key ? true : false;
                      $image->legend = self::createMultiLangField($product->name[1]);
                      if ($image->validateFields(UNFRIENDLY_ERROR) AND $image->validateFieldsLang(UNFRIENDLY_ERROR))
                          if ($image->add())
                              self::copyImg($product->id, $image->id, $url);
                          else
                              $this->_warnings[] = mysql_error().' '.$image->legend[1].(isset($image->id_product) ? ' ('.$image->id_product.')' : '').' '.Tools::displayError('cannot be saved');
                  }
            }



APRES

          $res = false;
          if ($product->validateFields(UNFRIENDLY_ERROR) AND $product->validateFieldsLang(UNFRIENDLY_ERROR))
          {
              // If id product AND id product already in base, trying to update
              if ($product->id AND $product->productExists(intval($product->id)))
                  $res = $product->update();
              // If no id_product or update failed
              if (!$res)
                  $res = $product->add();
          }
          // If both failed, mysql error
          if (!$res)
              $this->_errors[] = mysql_error().' '.$info['name'].(isset($info['id']) ? ' (ID '.$info['id'].')' : '').' '.Tools::displayError('cannot be saved');
          else
          { 



Et hop l'import de nouveaux produits fonctionne avec des images.



Bonsoir,

J'ai exactement le même problème, mais comme je suis en vers. 1.2.5, la correction ne doit plus être valable car je ne retrouve pas le même code, surtout la partie "Après" ($res = false;...)

Une idée ou une mise à jour? Apparement le fix du bug a dû se perdre entre version.

Merci milles fois de votre aide poru la mise à jour de ce correctifs.

Dom
Link to comment
Share on other sites

Bonjour
je suis en 1.2.5 et j'ai importé toute mes photos par csv et aucun problème

j'ai d'abord importé mes produit ou catégorie car j'ai fait les deux, et ensuite relevée les ID (bien mettre dans l'ordre le csv avant comme ca les id ce suive ) et après importer les champs qui me manquais comme les quantité et url image
et tout a parfaitement fonctionné
mes images etait d'abord mis dans le dossier upload de prestashop


Cordialement

Link to comment
Share on other sites

  • 5 months later...

Bonjour,

De mon coté j importe directement un csv provenant d' un logiciel tiers (cardiff) et je copie l 'image principal , cependant je suis obligé de regénérer les vignettes dans le back office.

Quelqu' un a une idée pour le faire à la volée depuis l' import ? C' est surement dans le code, mais si quelqu' un à déjà l' info ce serait cool !

Merci d' avance.

Bonne journée.

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...