Подтвердить что ты не робот

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

У меня есть магазин 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

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

Спасибо,

Дэнни

4b9b3361

Ответ 1

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

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

<?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-адрес в адресную строку браузера. Я еще не тестировал этот script.

Ответ 2

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

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

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

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;

Ответ 3

Я знаю, что это старый пост, однако, если у кого-то есть такая же проблема, проблема была в 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

Спасибо.

Ответ 4

Я использовал метод stereo_world на magento 1.7.0.2, и он отлично работал. (Я не могу выдвинуть его ответ, потому что я новичок в stackoverflow)

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

Как указано в clockworkgeek - необходимы сбросы reindex/cache.

Ответ 5

@user2321249 Чтобы найти идентификатор атрибута в CE 1.9.1, перейдите на страницу сведений об атрибутах и ​​посмотрите URL. Например, из бэкэнда администратора выберите "Каталог- > " Управление атрибутами ". Найдите атрибут thumbnail и выберите его. В моей системе URL-адрес:

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

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

Ответ 6

Я получил его работу, используя следующий трюк для версии 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 и снова импортируйте запрос. Обязательно замените значения идентификатора атрибута на свой собственный

Ответ 7

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

Любое предложение, пожалуйста.

С уважением, Ананд