Make all store images the base, small and thumbnail images in Magento?

后端 未结 6 909
迷失自我
迷失自我 2020-12-13 16:13

I have a Magento store that has around 3,000 products. Almost all of these products have a single image attached to it.

For some reason, even though I set the small

相关标签:
6条回答
  • 2020-12-13 16:23

    I used stereo_world's method on magento 1.7.0.2 and it worked great. (I can't upvote his answer because I'm new to stackoverflow)

    I don't know where he is seeing the attribute id in the attribute panel, because I don't see a numerical id there at all. I found the ids (85,86,87) by opening up phpMyAdmin and looking in eav_attribute table.

    As clockworkgeek pointed out - reindex/cache flush are necessary.

    0 讨论(0)
  • 2020-12-13 16:25

    Just as a warning to anyone (like myself!) who wants to try out this script. I ran this without thinking and it changed all the product names!

    1. Go into your attributes panel, find the image/small image/thumbnail attributes.
    2. Note down the ids (mine in this case were 85,86 and 87)
    3. Change the query to reflect those id's.

    So my query looks like:

    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;
    
    0 讨论(0)
  • 2020-12-13 16:26

    After making a change like that to the database, even if successful, you would need to rebuild the images cache in Cache Management.

    You might be able to do it with a script like this and not worry about caching or indexing.

    <?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!
    

    Save this in your Magento directory and access it by typing the URL into your browser's address bar. I haven't tested this script yet.

    0 讨论(0)
  • 2020-12-13 16:29

    i know this is an old post, however in case anyone has the same issue then the problem was with the ev.attribute_id. Updated code below:

    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
    

    Thanks.

    0 讨论(0)
  • 2020-12-13 16:40

    I got it working using the following trick for Magento 1.9.2.2 version:

    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
    

    Then replace value 75 with 76 and import the query again. Be sure to replace the attribute id values to your own

    0 讨论(0)
  • 2020-12-13 16:46

    @user2321249 To find the attribute id in CE 1.9.1, go to the attribute information page and look at the URL. For example, from the Admin backend, select Catalog->Manage Attributes. Find the thumbnail attribute and select it. With my system the URL is:

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

    You can easily tell the thumbnail attribute_id in my system is 87. Do the same for the Base Image and Small Image.

    0 讨论(0)
提交回复
热议问题