将图像添加到产品库 - 无法获取媒体类型

时间:2012-05-10 18:14:18

标签: php magento

我正在尝试以编程方式向我的所有产品添加基本,小图像和缩略图。图像导入正常并按预期放入/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。我试图模仿法师产品进口商会做什么。

非常感谢任何关于为什么没有设置小标记和缩略图标志的见解!

3 个答案:

答案 0 :(得分: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/>";
            }
        }

注意$imageType不是数组,与对应的数据相同。

编辑:您只需要一个图片,并将其设置为每种类型。使用$product->save()保存产品后,尝试使用以下内容,假设您已经设置了image类型:

$product->setThumbnail($product->getImage());
$product->setSmallImage($product->getImage());
$product->save();

答案 1 :(得分:0)

我正在复制产品,并希望复制产品图片。

我在这工作了几个小时,无法获得数组('thumbnail','small_image','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']);

答案 2 :(得分:0)

除非你设置了store id,否则它不会坚持。

我这样做了:

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

我只有一家商店。