设置以编程方式导入的产品图像的显示顺序

时间:2013-04-07 01:26:58

标签: magento magento-1.7

在我测试magento期间,我已经能够通过阅读XML将产品导入商店。我的XML还包含与产品关联的图像URL数组。我读取了每个图像属性中的URL,下载并将其移动到media / import文件夹中。然后我将每个图像与产品相关联

foreach($mediaArray as $imageType => $fileName)
{
    try {
         $product->addImageToMediaGallery($fileName, $imageType, false, false);
    } catch (Exception $e) {
         echo $e->getMessage();
    }
}

我想要解决的一件事是确定图像的排序顺序,哪一个是页面加载时显示的默认图像。有没有办法以编程方式说我希望这个文件成为第一个显示的图像?它在页面加载时显示的magento并不是最好的。

1 个答案:

答案 0 :(得分:3)

以下代码允许您导入图像并设置位置。它将根据数组中图像的顺序设置位置,因此如果不是必需的话,您需要更改它,但希望这至少可以让您了解如何完成它。

$sku = $product->getSku();
$media = Mage::getModel('catalog/product_attribute_media_api');

$position = 1;
foreach($mediaArray as $fileName) {

    if (file_exists($fileName)) { // assuming $fileName is full path not just the file name
        $pathInfo = pathinfo($fileName);

        switch($pathInfo['extension']){
            case 'png':
                $mimeType = 'image/png';
                break;
            case 'jpg':
                $mimeType = 'image/jpeg';
                break;
            case 'gif':
                $mimeType = 'image/gif';
                break;
        }

        $types = ($position == 1) ? array('image', 'small_image', 'thumbnail') : array();
        $newImage = array(
            'file' => array(
                'content' => base64_encode($fileName),
                'mime' => $mimeType,
                'name' => basename($fileName),
                ),
            'label' => 'whatever', // change this. 
            'position' => $position,
            'types' => $types,
            'exclude' => 0,
        );

        $media->create($sku, $newImage);
        // OR (if you would rather use the product entity ID):
        // $media->create($productId, $newImage, null, 'id');
        $position++;
    } else {
        // image not found
    }
}