Сделайте все изображения магазина базовыми, маленькими и уменьшенными изображениями в 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
Кто-нибудь знает, почему это не работает?
Спасибо,
Дэнни
Ответы
Ответ 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
Я привык использовать этот скрипт с успешными результатами. Но сейчас дни не работают, пока я не открою каждый продукт и не наведу курсор на изображение. После этого на сайте отображается только миниатюра.
Любое предложение, пожалуйста.
С уважением, Ананд