sococa Posted October 7, 2024 Share Posted October 7, 2024 (edited) Bonjour, Je recense énormément de problèmes avec mes images produits. Quand j'importe mes produits, il n'est pas rare que les images ne soient pas les bonnes ou ne soient tout simplement pas présentes. Je sais qu'il y a un bouton 'régénérer les miniatures', mais je suis sur un hébergement hostinger et le temps de traitemente st trop long pour le serveur il n'arrive pas au bout. Quand bien même, je ne comprends pas pourquoi l'import des produits cause tant de problème sur les images. Si quelqu'un pouvait m'éclairer un peu, ce serait super. Merci d'avance, Bonne journée Edited October 14, 2024 by sococa (see edit history) Link to comment Share on other sites More sharing options...
Divine Posted October 7, 2024 Share Posted October 7, 2024 Bonjour, Si le traitement n'arrive pas au bout, vous pouvez revenir en arrière et le relancer en décochant cette fois-ci "Effacer les images précédentes". Vous pouvez refaire cette manipulation plusieurs fois jusqu'à ce que le traitement soit bien terminé. Link to comment Share on other sites More sharing options...
sococa Posted October 7, 2024 Author Share Posted October 7, 2024 (edited) Bonjour @Divine, merci pour ta réponse rapide mais ce sera très laborieux comme il y a 3200 produits. UPDATE : Lorsque j'importe mes produits, il manque des images. L'image du haut est bien récupérée via https://lebrun.fr/shop-pro/42-large_default/boite-de-6-chopes-jazz-30cl-forme-haute-en-verre-trempe-transparent.webp celle de droit recherche https://lebrun.fr/shop-pro/43-medium_default/boite-de-6-chopes-jazz-30cl-forme-haute-en-verre-trempe-transparent.jpg Et effectivement, l'a deuxiement image avec l'id 43 n'existe pas dans img/p/4/3 donc n'est pas créée à l'import des produits. Je me demande s'il est normal que le code tente de charger d'abord une image 42-large_default puis une 43-medium_default. Ca en devrait pas être toujours 42 ? Le problème vient-il du code déjà en place qui gère l'import des produits ? voici le code concernant les images : private function setImages(Product $product, array $row) : void { $this->setImage($product,$row["Image1"]); $this->setImage($product,$row["Image2"]); $this->setImage($product,$row["Image3"]); $this->setImage($product,$row["Image4"]); $this->setImage($product,$row["Image5"]); $this->setImage($product,$row["Image6"]); $this->setImage($product,$row["Image7"]); // Pour l'image de la marque if(file_exists(__DIR__."/../../files/imports/images/".$row["Article"]."-M.jpg")){ $this->setImage($product,__DIR__."/../../files/imports/images/".$row["Article"]."-M.jpg"); } } private function setImage(Product $product, string $imageUrl) : void { if (!empty(trim($imageUrl))) { $filename = basename($imageUrl); $localPath = __DIR__ . "/../../files/imports/images/" . $filename; // Télécharge l'image si elle n'existe pas déjà localement if ($this->downloadImage($imageUrl, $localPath)) { $infoRow = $this->imageService->getInfoImage(substr($filename, 0, -4)); if (is_int($infoRow["position"])) { $productImages = $product->getImages(1); // Récupère les images actuelles du produit // Cherche si une image existe déjà à cette position $productImage = array_search((int) $infoRow["position"], array_column($productImages, 'position')); // Comparaison des images existantes if ($productImage !== false) { $existingImagePath = _PS_IMG_DIR_ . 'p/' . Image::getImgFolderStatic($productImages[$productImage]['id_image']) . $productImages[$productImage]['id_image'] . '.' . $productImages[$productImage]['image_format']; // Calcul du hash des deux images if (file_exists($existingImagePath) && md5_file($existingImagePath) === md5_file($localPath)) { // Si les images sont identiques, on ne fait rien return; } } // Si l'image n'existe pas ou est différente, la créer ou la mettre à jour if ($productImage === false) { $this->imageService->createImage($product, $infoRow["position"], $localPath); } else { $this->imageService->updateImage($product, $productImages[$productImage]["id_image"], $infoRow["position"], $localPath); } } } else { throw new Exception($product->reference . " : Image " . $filename . " introuvable \n"); } } } private function downloadImage(string $url, string $path): bool { // Tente de télécharger le contenu de l'image depuis l'URL $imageContent = @file_get_contents($url); if($imageContent === false) { // Si le téléchargement échoue, retourne false return false; } // Tente de sauvegarder le contenu téléchargé à l'emplacement spécifié return file_put_contents($path, $imageContent) !== false; } Merci Edited October 7, 2024 by sococa (see edit history) Link to comment Share on other sites More sharing options...
sococa Posted October 14, 2024 Author Share Posted October 14, 2024 Salut, J'ai résolu mo, problème tout simplement en supprimant toutes les images dans img/p, puis en ré-important tous les produits. Link to comment Share on other sites More sharing options...
Divine Posted October 14, 2024 Share Posted October 14, 2024 Impeccable. Merci pour ce retour Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now