2

画像を含む2000以上の製品をインポートするインポートスクリプトがあります。このスクリプトはCLI経由で実行します。これは、magento adminで拡張機能として同じインポートスクリプトを使用して実行できる場合でも、これが速度を向上させるための最良の方法であると感じているためです。スクリプトはかなりうまく実行されます。ほぼ完璧!ただし、addToImageGallery何らかの理由で誤動作し、一部の画像がNo Imageデフォルトの商品画像として含まれ、他の画像のみがデフォルトとしてまったく選択されていない場合があります。すべての製品を一括更新して、製品のメディアギャラリーの最初の画像をデフォルトの「ベース」、「画像」、「サムネイル」の画像に設定するにはどうすればよいですか?

4

3 に答える 3

6

私はこのリンクでこれ(およびそれ以上)を行うためのいくつかのトリックを見つけました:

http://www.magentocommerce.com/boards/viewthread/59440/(transioに感謝します!)

ただし、Magento 1.6.2.0(私が使用している)の場合、最初のSQLトリック(トリック1-デフォルトのベース、サム、小さな画像を最初の画像に自動設定します)には少し変更が必要です。

最後から2番目の行にAND ev.attribute_id IN (70, 71, 72)一部があります。これは、おそらくMagento1.6.2.0ではもう関係がない属性IDを指しているはずです。これを修正するために、MySQLクエリツール(PHPMyAdminまたはMySQLクエリブラウザ)を使用して、catalog_product_entity_varcharテーブルを確認しました。次のようなエントリが必要です。

value_id, entity_type_id, attribute_id, store_id, entity_id, value
..
146649, 4, 116, 0, 1, '2'
146650, 4, 76, 0, 1, ''
146651, 4, 78, 0, 1, ''
146652, 4, 79, 0, 1, '/B/0/B05-01.jpg'
146653, 4, 80, 0, 1, '/B/0/B05-01.jpg'
146654, 4, 81, 0, 1, '/B/0/B05-01.jpg'
146655, 4, 96, 0, 1, ''
146656, 4, 100, 0, 1, ''
146657, 4, 102, 0, 1, 'container2'
..

私のお金は、可能な代替として3つの画像パスのグループにありました。したがって、結果のSQLは次のようになります。

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 (79, 80, 81) # <-- attribute IDs updated here
    AND mgv.position = 1;

だから私はそれにコミットし、それを実行し、そして.. presto!すべて修正されました!必要に応じて、これをトランザクションにカプセル化することもできます。しかし、これはこの質問の範囲外です。

さて、これは私にとってこれまでにうまくいった修正です!他にある場合は、共有してください!

于 2012-06-03T12:59:17.500 に答える
1
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 (79, 80, 81) # <-- attribute IDs updated here
    AND mgv.position = 1;
于 2016-09-03T12:00:12.503 に答える
1

ありました:

146652, 4, 79, 0, 1, '/B/0/B05-01.jpg'
146653, 4, 80, 0, 1, '/B/0/B05-01.jpg'
146654, 4, 81, 0、1、「/B/0/B05-01.jpg」

したがって、次のようになります。

AND ev.attribute_id IN (79, 80, 81) # <-- ここで属性 ID を更新

それ以外の:

AND ev.attribute_id IN (78, 80, 81) # <-- ここで属性 ID を更新

似たようなものを探しています。

于 2013-04-09T12:52:00.733 に答える