Problème : l'image affichée est différente de celle que vous avez insérée. Erreurs possibles :
- Vérifiez pour chaque produit toutes les images de la vue du magasin. Peut-être qu'elle correspond à l'image que vous souhaitez.
- Reconstruire le cache d'images
- Vérifier les autorisations sur le répertoire
- Vérifiez si une image portant le même nom existe déjà dans le fichier multimédia. Vérifiez également si le problème est dû à une insensibilité à la casse.
- Réindexer la structure des produits du catalogue. Cela permet de s'assurer que la bonne image de produit est liée et affichée
MISE À JOUR : Magento affiche l'image dans le frontend, mais pas dans le backend
Solution : J'ai probablement trouvé la solution maintenant. L'image est affichée dans le frontend, mais pas dans le backend. Il s'agit probablement d'une solution : http://www.blog.magepsycho.com/how-to-fix-the-issue-product-images-missing-in-backend-but-not-in-frontend/ Il s'agit d'un script qui vérifie les « dommages » dans la table, ce qui est la raison pour laquelle une image ne s'affiche pas.
MISE À JOUR 2 : Multistore affiche des images erronées/différentes par magasin
Comment récupérer les images et réinitialiser toutes les images
Une extension de la mise à jour ci-dessus est ma propre personnalisation du script. Elle récupère les images qui s'affichent dans le frontend mais pas dans le backend ou lorsque des images erronées/différentes sont affichées parmi les différentes vues de la boutique.
mise_à_jour_fichiers_manquants.php
* @website http://www.magepsycho.com edited by http://www.devproblems.com * @category Export / Import */ $mageFilename = 'app/Mage.php'; require_once $mageFilename; Mage::setIsDeveloperMode(true); ini_set('display_errors', 1); umask(0); Mage::app('admin'); Mage::register('isSecureArea', 1); Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); set_time_limit(0); ini_set('memory_limit','1024M'); /***************** UTILITY FUNCTIONS ********************/ function _log($message, $file = 'update_missing_images.log'){ Mage::log($message, null, $file); } function _getIndex($field) { global $fields; $result = array_search($field, $fields); if($result === false){ $result = -1; } return $result; } function _getConnection($type = 'core_read'){ return Mage::getSingleton('core/resource')->getConnection($type); } function _getTableName($tableName){ return Mage::getSingleton('core/resource')->getTableName($tableName); } function _getAttributeId($attribute_code = 'price'){ $connection = _getConnection('core_read'); $sql = "SELECT attribute_id FROM " . _getTableName('eav_attribute') . " WHERE entity_type_id = ? AND attribute_code = ?"; $entity_type_id = _getEntityTypeId(); return $connection->fetchOne($sql, array($entity_type_id, $attribute_code)); } function _getEntityTypeId($entity_type_code = 'catalog_product'){ $connection = _getConnection('core_read'); $sql = "SELECT entity_type_id FROM " . _getTableName('eav_entity_type') . " WHERE entity_type_code = ?"; return $connection->fetchOne($sql, array($entity_type_code)); } function _getIdFromSku($sku){ $connection = _getConnection('core_read'); $sql = "SELECT entity_id FROM " . _getTableName('catalog_product_entity') . " WHERE sku = ?"; return $connection->fetchOne($sql, array($sku)); } function _checkIfSkuExists($sku){ $connection = _getConnection('core_read'); $sql = "SELECT COUNT(*) AS count_no FROM " . _getTableName('catalog_product_entity') . " WHERE sku = ?"; $count = $connection->fetchOne($sql, array($sku)); if($count > 0){ return true; }else{ return false; } } function _checkIfRowExists($productId, $attributeId, $value){ $tableName = _getTableName('catalog_product_entity_media_gallery'); $connection = _getConnection('core_read'); $sql = "SELECT COUNT(*) AS count_no FROM " . _getTableName($tableName) . " WHERE entity_id = ? AND attribute_id = ? AND value = ?"; $count = $connection->fetchOne($sql, array($productId, $attributeId, $value)); if($count > 0){ return true; }else{ return false; } } function _insertRow($productId, $attributeId, $value){ $connection = _getConnection('core_write'); $tableName = _getTableName('catalog_product_entity_media_gallery'); $sql = "INSERT INTO " . $tableName . " (attribute_id, entity_id, value) VALUES (?, ?, ?)"; $connection->query($sql, array($attributeId, $productId, $value)); } function _deleteWrongRows($productId, $smallImageId, $imageId, $thumbnailId){ $connection = _getConnection('core_write'); $tableName = _getTableName('catalog_product_entity_varchar'); $sql = "DELETE FROM " . $tableName . " WHERE `entity_id` = ? AND store_id != ? AND ( attribute_id = ? OR attribute_id = ? OR attribute_id = ? )"; //printf($sql, $productId, 0, $smallImageId, $imageId, $thumbnailId); $connection->query($sql, array($productId, 0, $smallImageId, $imageId, $thumbnailId)); } function _updateMissingImages($count, $productId, $data){ $connection = _getConnection('core_read'); $smallImageId = _getAttributeId('small_image'); $imageId = _getAttributeId('image'); $thumbnailId = _getAttributeId('thumbnail'); $mediaGalleryId = _getAttributeId('media_gallery'); //getting small, base, thumbnail images from catalog_product_entity_varchar for a product $sql = "SELECT * FROM " . _getTableName('catalog_product_entity_varchar') . " WHERE attribute_id IN (?, ?, ?) AND entity_id = ? AND `value` != 'no_selection'"; $rows = $connection->fetchAll($sql, array($imageId, $smallImageId, $thumbnailId, $productId)); if(!empty($rows)){ foreach($rows as $_image){ //check if that images exist in catalog_product_entity_media_gallery table or not if(!_checkIfRowExists($productId, $mediaGalleryId, $_image['value'])){ //insert that image in catalog_product_entity_media_gallery if it doesn't exist _insertRow($productId, $mediaGalleryId, $_image['value']); /* Output / Logs */ $missingImageUpdates = $count . '> Updated for:: $productId=' . $productId . ', $image=' . $_image['value']; echo $missingImageUpdates.' '; _log($missingImageUpdates); } // delete wrong product selected images storeview rows if(_deleteWrongRows($productId, $smallImageId, $imageId, $thumbnailId)){ $ImageUpdates = $count . '> Deleted wrong rows for:: $productId=' . $productId . ', $image=' . $_image['value']; echo $ImageUpdates.' '; _log($ImageUpdates); } } $separator = str_repeat('=', 100); _log($separator); echo $separator . ' '; } } /***************** UTILITY FUNCTIONS ********************/ $messages = array(); $csv = new Varien_File_Csv(); $data = $csv->getData('update_missing_images.csv'); //path to csv $fields = array_shift($data); #print_r($fields); print_r($data); exit; $message = '
'; $count = 1; foreach($data as $_data){ $sku = isset($_data[_getIndex('sku')]) ? trim($_data[_getIndex('sku')]) : ''; if(_checkIfSkuExists($sku)){ try{ $productId = _getIdFromSku($sku); _updateMissingImages($count, $productId, $_data); $message .= $count . '> Succès :: lors de la mise à jour des images de Sku (' . $sku . '). '; }catch(Exception $e){ $message .= $count .'> Erreur :: Lors de la mise à jour des images de SKU (' . $sku . ') => '.$e->getMessage().' '; } }else{ $message .= $count .'> Erreur :: Le produit avec SKU (' . $sku . ') n'existe pas. '; } $count++; } echo $message; //$process = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_product_flat'); ?>
Créez un fichier update_missing_images.csv comme :
référence SKU1234 SKU4312 ETC.
UTILISEZ CE SCRIPT À VOS PROPRES RISQUES
J'ai probablement trouvé la solution maintenant. L'image est affichée dans le frontend, mais pas dans le backend. C'est probablement une solution : http://www.blog.magepsycho.com/how-to-fix-the-issue-product-images-missing-in-backend-but-not-in-frontend/