Hacer todas las imágenes del almacén de la base, las pequeñas y las imágenes en miniatura en Magento?

StackOverflow https://stackoverflow.com/questions/4349592

Pregunta

Tengo una tienda de Magento que tiene alrededor de 3.000 productos. Casi todos estos productos tienen una sola imagen que se le atribuye.

Por alguna razón, a pesar de que me puse la pequeña imagen y miniatura de la imagen como la misma base de la imagen en el archivo de importación CSV como, solamente la imagen de base se establece para cada producto. Esto significa que cuando se busca un producto que reciben un marcador de posición - pero una vez que entra en la página de producto se obtiene la imagen correcta. Esto se puede remediar fácilmente por entrar en la página de administración de producto y selección de las casillas de pequeña imagen y miniatura.

El problema es, con 3.000 imágenes esto tomaría mucho tiempo para hacerlo manualmente. He encontrado un comando SQL que debe hacen que toda la base, pequeñas y miniatura imágenes de mapa de imagen de la primera para cada producto. Ya que sólo tengo una imagen para cada producto, esto debe ser perfecto. Sin embargo, no hace nada. Dice 0 filas cambiadas.

UPDATE catalog_product_entity_media_gallery AS mg,
catalog_product_entity_media_gallery_value AS mgv,
catalog_product_entity_varchar AS ev
SET ev.value = mg.value
WHERE  mg.value_id = mgv.value_id
AND mg.entity_id = ev.entity_id
AND ev.attribute_id IN (70, 71, 72)
AND mgv.position = 1

¿Alguien sabe por qué esto no está funcionando?

Gracias,

Danny

¿Fue útil?

Solución

Después de hacer un cambio de esa manera a la base de datos, incluso si tiene éxito, se necesitaría para reconstruir las imágenes en caché de administración del caché.

podría ser capaz de hacerlo con un guión como este y no preocuparse por el almacenamiento en caché o indexación.

<?php

require 'app/Mage.php';
Mage::app();

$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*');
foreach ($products as $product) {
    if (!$product->hasImage()) continue;
    if (!$product->hasSmallImage()) $product->setSmallImage($product->getImage());
    if (!$product->hasThumbnail()) $product->setThumbnail($product->getImage());
    $product->save();
}

?>Done!

Guardar este en el directorio de Magento y acceder a él escribiendo la URL en la barra de direcciones del navegador. No he probado este script todavía.

Otros consejos

Así como una advertencia a cualquier persona (como yo!) Que quiera probar este script. Me encontré con esto sin pensar y cambió todos los nombres de productos!

  1. Vaya a su panel de atributos, encontrar la imagen / pequeña / miniatura atributos.
  2. Anote los identificadores (mina en este caso fueron 85,86 y 87)
  3. Cambiar la consulta para reflejar de los ID.

Así que mis miradas de consulta como:

UPDATE catalog_product_entity_media_gallery AS mg,
       catalog_product_entity_media_gallery_value AS mgv,
       catalog_product_entity_varchar AS ev
SET ev.value = mg.value
WHERE  mg.value_id = mgv.value_id
AND mg.entity_id = ev.entity_id
AND ev.attribute_id IN (85,86,87)
AND mgv.position = 1;

Sé que esto es una entrada antigua, sin embargo, en caso de que alguien tiene el mismo problema, entonces el problema era con el ev.attribute_id. código actualizado a continuación:

UPDATE 
    catalog_product_entity_media_gallery AS mg,
    catalog_product_entity_media_gallery_value AS mgv,
    catalog_product_entity_varchar AS ev
SET 
    ev.value = mg.value
WHERE  
    mg.value_id = mgv.value_id
      AND mg.entity_id = ev.entity_id
      AND ev.attribute_id IN (74, 75, 76)
      AND mgv.position = 1

Gracias.

utiliza el método de stereo_world en Magento 1.7.0.2 y funcionó muy bien. (No puedo upvote su respuesta porque soy nuevo en stackoverflow)

No sé donde él está viendo el atributo id en el panel de atributos, porque no veo un identificador numérico allí en absoluto. He encontrado los identificadores (85,86,87) mediante la apertura de phpMyAdmin y mirando en eav_attribute mesa.

Como se señaló clockworkgeek - reindex / cache ras son necesarios

.

@ user2321249 Para buscar el identificador de atributo en la CE 1.9.1, vaya a la página de información de atributos y la mirada en la dirección URL. Por ejemplo, desde el servidor de administración, seleccione Catalogo-> Administrar atributos. Encuentra el atributo de miniaturas y seleccionarlo. Con mi sistema de la URL es:

  

www.example.com/magento/index.php/admin/catalog_product_attribute/edit/ attribute_id / 87 / clave / f759b57c21a7c75f33095a243f44b2a5 /

Se puede decir fácilmente la miniatura attribute_id en mi sistema es el mismo para la imagen y la base de imagen pequeña 87. Do.

Lo tengo trabajo utilizando el siguiente truco para Magento versión 1.9.2.2:

INSERT INTO catalog_product_entity_varchar
      (entity_type_id, attribute_id, store_id, entity_id, value)
SELECT
      entity_type_id, 75, store_id, entity_id, value
FROM
      catalog_product_entity_varchar
WHERE 
      attribute_id = 74

A continuación, reemplazar el valor 75 con 76 e importar la consulta de nuevo. Asegúrese de sustituir los valores de atributo de ID a su propia

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top