Magento2 magento 2如何为产品设置基础图像或缩略图
我的问题是在yopu向magento 2中的te prodcut添加图像后,如何将其设置为产品的默认图像(基本图像)。Magento2 magento 2如何为产品设置基础图像或缩略图,magento2,Magento2,我的问题是在yopu向magento 2中的te prodcut添加图像后,如何将其设置为产品的默认图像(基本图像)。 我找到了如何将图像添加到产品中,但我找到了一个方法,即将其设置为产品的基本图像。加载产品后: $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $product = $objectManager->create('Magento\Catalog\Model\Product')->
我找到了如何将图像添加到产品中,但我找到了一个方法,即将其设置为产品的基本图像。加载产品后:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->create('Magento\Catalog\Model\Product')->load(PRODUCT ID);
您可以使用以下代码获取产品的所有图像:
$images = $product->getMediaGalleryImages();
这将返回一个集合,其中包含添加到产品中的所有图像。
您可以选择任何图像或像这样拍摄第一张图像:
$image = $images->getFirstItem();
$product->save();
之后,您可以使用
$imageUrl = $image->getFile();
要将其设置为产品,请执行以下操作:
$product->setImage($image);
$product->setSmallImage($image);
$product->setThumbnail($image);
$product->setSwatchImage($image);
并按如下方式保存产品:
$image = $images->getFirstItem();
$product->save();
在获得您想要的产品ID后,为每个产品编写如下代码
$product = $this->productRepository->getById($data['product_id']);
$mediaGalleryEntriesTemp = [];
$i = 1;
foreach ($product->getMediaGalleryEntries() as $item) {
if ($i === 1) {
$item->setTypes(['image', 'small_image', 'thumbnail']);
}
$mediaGalleryEntriesTemp[] = $item;
$i++;
}
$product->setMediaGalleryEntries($mediaGalleryEntriesTemp);
$this->productRepository->save($product);
注意:“swatch_image”角色仅在简单产品或
可配置的子产品,而不是可配置的父产品
测试后,解决方案在Magento 2.2.3中运行,其他版本也应该运行。我的Magento 2.3.3解决方案运行良好 对我来说,我的场景有点不同,我需要现有产品的基础和小图像,我有图像名称:) 保存图像后,可以使用此代码生成基础图像
$product = $objectManager->create('Magento\Catalog\Model\Product')->load($product->getId());
$images = $product->getMediaGalleryEntries();
$mediaGallery = $product->getMediaGallery();
//if there are images
if (isset($mediaGallery['images'])){
//loop through the images
foreach ($mediaGallery['images'] as $image){
// make the base image by name
if(strpos($image['file'], 'PRODUCT_NAME') !== false){
$objectManager->get('Magento\Catalog\Model\Product\Action')->updateAttributes(array($product->getId()), array('image'=>$image['file'], 'small_image'=>$image['file']), 0);
//stop
break;
} else{
echo "can't find";
}
}
}
更改产品名称,或者如果不需要,则删除if-else条件
我希望它能帮助其他人嗯,到处都有人提到,
$product->save()
在Magento 2中被弃用。有人知道如何以不与M2推荐使用冲突的方式进行此操作吗?