以编程方式设置基础映像


Set Base Image Programmatically

我有这个问题我无法解决。部分原因是我无法用正确的术语来解释它。我是新手,对这个笨拙的问题感到抱歉。

下面你可以看到我的目标概述。

正在尝试在我的magento中销售类似的产品,为此我写了一些代码,每件事都工作正常。

但我对图像只有一个问题..

也就是说,我正在获取当前产品的所有图像,但未选择基本图像,如何以编程方式将第一个图像设置为基本图像。

有什么想法吗?

你好 你可以执行以下操作:

$image =$imagePath."image.png";
$product->setMediaGallery(array('images'=>array (), 'values'=>array ()));
if(is_file($image))
{
    $product->addImageToMediaGallery($image, array ('image', 'small_image', 'thumbnail'), false, false);
}

即您需要首先设置媒体库,P.S 这是一个必要的步骤。

然后使用addImageToMediaGallery将所有图像添加到图库中,其中"图像"引用为"base_image"

即在上面的示例中,我们将图像.png设置为在一次调用中base_image、small_image和缩略图。

希望这对你有帮助。

我通过使用:

$product->setSmallImage($path)
    ->setThumbnail($path)
    ->setImage($path)
    ->save();

适用于媒体库中包含一张或多张图片的情况。

我在做

$product->load();
$gallery = $product->getMediaGalleryImages();
$paths = array();
foreach ($gallery as $image) {
    $paths[] = $image->getFile();
}
sort($paths);
$path = array_shift($paths);
try {
    $product->setSmallImage($path)
        ->setThumbnail($path)
        ->setImage($path)
        ->save();
} catch (Exception $e) {
    echo $e->getMessage();
}

它获取所有产品图像,按文件名对它们进行排序,并将第一个设置为产品主图像。当我运行导入并添加所有图片时,但没有设置主图像。

要抓取我使用的套装或"损坏"产品:

    $collection = Mage::getModel('catalog/product')
        ->getCollection()
        ->addAttributeToFilter('small_image', array('eq' => ''));