2

すべての製品にベース イメージ、小さいイメージ、およびサムネイル イメージをプログラムで追加しようとしています。画像は正常にインポートされ/media/catalog/product、期待どおりに配置されていますが、Magento バックエンドで製品の画像を表示すると、「ベース イメージ」のみが選択されます。

カタログ内の各製品をループして実行しています。

$mediaArray = array('thumbnail', 'small_image', 'image');   
$file = Mage::getBaseDir('media') . DS . 'import' .  trim($imageName);
try {
    $product->addImageToMediaGallery($file, $mediaArray, false, false);
    $product->save();
} catch (Exception $e) {
    echo $e->getMessage();
}

私の画像名はすべてスラッシュで始まり、画像自体は にアップロードされ/media/importます。Mage 製品のインポーターが行うことを真似ようとしています。

小さいフラグとサムネイル フラグが設定されていない理由についての洞察をいただければ幸いです。

4

3 に答える 3

3

これが私が使用した私自身のインポートコードです。

        // Add three image sizes to media gallery
        $mediaArray = array(
            'thumbnail'   => $oscProduct['products_image'],
            'small_image' => $oscProduct['products_mediumimage'],
            'image'       => $oscProduct['products_largeimage'],
        );

        // Remove unset images, add image to gallery if exists
        $importDir = Mage::getBaseDir('media') . DS . 'import/';

        foreach ( $mediaArray as $imageType => $fileName ) {
            $filePath = $importDir . $fileName;
            if ( file_exists($filePath) ) {
                try {
                    $product->addImageToMediaGallery($filePath, $imageType, false);
                } catch (Exception $e) {
                    echo $e->getMessage();
                }
            } else {
                echo "Product does not have an image or the path is incorrect. Path was: {$filePath}<br/>";
            }
        }

Note$imageTypeは配列ではありません。

編集:必要な画像は1つだけで、それを各タイプとして設定します。で製品を保存した後、タイプがすでに$product->save()設定されていると仮定して、次のようなことを試してください。image

$product->setThumbnail($product->getImage());
$product->setSmallImage($product->getImage());
$product->save();
于 2012-05-10T18:30:22.583 に答える
0

をセットしないとくっつきませんstore id

これは私がしました:

Mage::app()->getStore()->setId(Mage_Core_Model_App::ADMIN_STORE_ID);

1店舗しかありません。

于 2013-11-07T18:08:48.163 に答える
0

商品を複製していて、商品の画像もコピーしたかったのです。

私はこれに何時間も取り組みましたが、実際にこれらの値を設定するために array('thumbnail', 'small_image', 'image') を取得できませんでした。画像をライブラリに追加しますが、上記のタイプは設定しません。また、配列の代わりに「画像」などの文字列として入力しようとしましたが、これも機能しませんでした。最後に、これは私のために働いたすべてです:

//grab the pics from original product
$mediaApi = Mage::getModel("catalog/product_attribute_media_api");
$items = $mediaApi->items($product->getId());

//duplicate the product
$product = $product->duplicate();
$product->setStatus(1);

//also move the pics over
$product->setMediaGallery (array('images'=>array (), 'values'=>array ()));
$product->setImage($items[0]['file']);
$product->setThumbnail($items[0]['file']);
$product->setSmallImage($items[0]['file']);
于 2013-03-04T03:42:50.047 に答える