Сделать все изображения магазина базовыми, маленькими и миниатюрными изображениями в Magento?

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

Вопрос

У меня есть магазин Magento, в котором около 3000 товаров.Почти ко всем этим продуктам прикреплено одно изображение.

По какой-то причине, хотя я установил маленькое изображение и миниатюру так же, как базовое изображение в CSV-файле импорта, для каждого продукта устанавливается только базовое изображение.Это означает, что при поиске продукта вы получаете заполнитель, но как только вы зайдете на страницу продукта, вы получите правильное изображение.Это можно легко исправить, зайдя на страницу администратора продукта и выбрав поля для маленького изображения и миниатюры.

Проблема в том, что при наличии 3000 изображений вручную это займет довольно много времени.Я нашел команду SQL, которая должен Сделайте так, чтобы все базовые, маленькие и миниатюрные изображения отображались в качестве первого изображения для каждого продукта.Поскольку у меня есть только одно изображение для каждого продукта, это должно быть идеально.Однако это ничего не делает.Пишет, что изменено 0 строк.

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

Кто-нибудь знает, почему это не работает?

Спасибо,

Дэнни

Это было полезно?

Решение

После изменения такого изменения в базе данных, даже если успешно, вам нужно восстановить кэш изображения в Cache Management.

Вы можете сделать это со сценарием, как это, и не беспокоиться о кэшировании или индексации.

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

Сохраните это в своем каталоге Magento и доступа к нему, набрав URL в адресную панель вашего браузера. Я еще не проверил этот сценарий.

Другие советы

Так же как предупреждение никому (как я!) Кто хочет попробовать этот скрипт. Я пробежал это без мышления, и это изменило все имена продуктов!

  1. Перейдите в панель ваших атрибутов, найдите изображение / небольшое изображение / атрибуты миниатюр.
  2. Обратите внимание на идентификаторы (мои в этом случае были 85,86 и 87)
  3. Измените запрос, чтобы отразить эти идентификаторы.

Так что мой запрос выглядит как:

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;

я знаю, что это старый пост, однако, если у кого-то возникнет такая же проблема, проблема была в ev.attribute_id.Обновленный код ниже:

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

Спасибо.

Я использовал метод Stereo_world на Magento 1.7.0.2, и он отлично работал. (Я не могу расширить свой ответ, потому что я новичок в Stackoverflow)

Я не знаю, где он виден идентификатор атрибута на панели атрибута, потому что я вообще не вижу численного идентификатора. Я нашел идентификаторы (85 86,87), открыв phpmyadmin и глядя в таблицу eav_attribute.

Как указал ClockWorkeek Out - Neindex / Cache Flash необходимы.

@ user2321249 Чтобы найти идентификатор атрибута в CE 1.9.1, перейдите на страницу информации атрибута и посмотрите на URL. Например, от Backend admin выберите каталог-> Управление атрибутами. Найдите атрибут миниатюр и выберите его. С моей системой URL есть:

www.example.com/magento/index.php/admin/catalog_product_attribute/edit/adtribute_id / 87./ ключ / f759b57c21a7c75f33095a243f44b2a5 /

Вы можете легко сказать, что aptribute thumbnail_id в моей системе 87. Сделайте то же самое для базового изображения и небольшого изображения.

Я получил его, работая с помощью следующего трюка для Magento 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

Затем замените значение 75 на 76 и снова импортируйте запрос. Обязательно замените значения идентификатора атрибутов самостоятельно

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top