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

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

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

Спасибо,

Дэнни

Ответы [ 6 ]

21 голосов
/ 06 августа 2012

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

  1. Зайдите на панель атрибутов, найдите атрибуты image / small image / thumbnail.
  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;
19 голосов
/ 04 декабря 2010

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

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

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

Как указал clockworkgeek - необходимо переиндексация / очистка кэша.

1 голос
/ 23 августа 2011

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

Спасибо.

0 голосов
/ 13 ноября 2015

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

0 голосов
/ 04 февраля 2015

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

www.example.com / Magento / index.php / администратор / catalog_product_attribute / редактировать / attribute_id / 87 / ключ / f759b57c21a7c75f33095a243f44b2a5 /

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

...