Problema: se muestra una imagen incorrecta en comparación con la que insertó. Posibles errores:
- Consulta por producto todas las imágenes de la tienda. Quizás coincida con la imagen que deseas.
- Reconstruir la caché de imágenes
- Comprobar permisos en el directorio
- Compruebe si ya existe una imagen con el mismo nombre en el archivo multimedia. Compruebe también si el problema se debe a la falta de distinción entre mayúsculas y minúsculas.
- Reindexar la estructura de productos del catálogo. Esto garantiza que se vincule y muestre la imagen del producto correcta.
ACTUALIZACIÓN: Magento muestra la imagen en el frontend, pero no en el backend
Solución: Probablemente ya encontré la solución. La imagen se muestra en el frontend, pero no en el backend. Probablemente esta sea una solución: http://www.blog.magepsycho.com/how-to-fix-the-issue-product-images-missing-in-backend-but-not-in-frontend/ Es un script que comprueba si hay 'daños' en la tabla, que es la razón por la que no se muestra una imagen.
ACTUALIZACIÓN 2: Multistore muestra imágenes erróneas o diferentes por tienda
Cómo recuperar las imágenes y restablecer todas las imágenes
Una extensión de la actualización anterior es mi propia personalización del script. Recupera imágenes que aparecen en el frontend pero no en el backend o cuando se muestran imágenes incorrectas o diferentes entre las distintas vistas de la tienda.
actualizar_archivos_faltantes.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 como $_data){ $sku = isset($_data[_getIndex('sku')]) ? trim($_data[_getIndex('sku')]) : ''; if(_checkIfSkuExists($sku)){ try{ $productId = _getIdFromSku($sku); _updateMissingImages($count, $productId, $_data); $message .= $count . '> Éxito:: Al actualizar imágenes de Sku (' . $sku . '). '; }catch(Exception $e){ $message .= $count .'> Error:: Al actualizar las imágenes del SKU (' . $sku . ') => '.$e->getMessage().' '; } }else{ $message .= $count .'> Error:: El producto con el SKU (' . $sku . ') no existe. '; } $count++; } echo $message; //$process = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_product_flat'); ?>
Crea un archivo update_missing_images.csv como:
Código SKU1234 SKU4312 ETC.
UTILICE ESTE GUIÓN BAJO SU PROPIA RESPONSABILIDAD
Probablemente ya encontré la solución. La imagen se muestra en el frontend, pero no en el backend. Probablemente esta sea una solución: http://www.blog.magepsycho.com/how-to-fix-the-issue-product-images-missing-in-backend-but-not-in-frontend/