1

在我测试 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 并不是最好的。

4

1 回答 1

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
    }
}
于 2013-04-07T14:37:57.223 回答