【问题标题】:Set Base Image Programmatically以编程方式设置基础图像
【发布时间】:2013-09-28 01:19:19
【问题描述】:

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

您可以在下面看到我的目标概览。

我正在尝试在我的 magento 中销售类似的产品,为此我编写了一些代码,一切都运行良好..

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

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

有什么想法吗?

【问题讨论】:

    标签: php image magento frontend backend


    【解决方案1】:

    我使用以下方法获得了相同的结果:

    $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' => ''));
    

    【讨论】:

      【解决方案2】:

      你好,你可以这样做:

      $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 将所有图片添加到图库,其中 'image' ref to 'base_image'

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

      希望对你有所帮助。

      【讨论】:

        猜你喜欢
        • 2017-02-26
        • 2011-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-20
        • 2016-06-12
        • 1970-01-01
        相关资源
        最近更新 更多