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