【问题标题】:Programmatically setting default media gallery image for Store View (Magento)以编程方式为商店视图(Magento)设置默认媒体库图像
【发布时间】:2011-08-01 02:48:58
【问题描述】:

我有一个脚本,可以将图像添加到我的产品中。用于设置图片、small_image 和 thumbnail。该代码适用于默认视图,但是当我切换到存储视图时,媒体库设置为“no_image”。导致我的产品在前端完全没有图像。

我尝试重置商店视图属性但没有成功。

$product->addImageToMediaGallery($fileName, array('image', 'small_image', 'thumbnail'), false, false);
$attributes = $product->setStoreId(1)->getTypeInstance(true)->getSetAttributes($product);
if (isset($attributes['media_gallery'])) {
    $attributes['media_gallery']->getBackend()->clearMediaAttribute($product, array('image', 'small_image', 'thumbnail'));
}
$product->save(); 

如何修改特定的商店属性,并将它们重置为使用父属性?

谢谢。

【问题讨论】:

  • 我找到了解决方案。比我想象的要简单:foreach($product->getStoreIds() as $storeId) {$product->load(null);$product->setStoreId($storeId)->setImage(false);$product->setStoreId($storeId)->setSmallImage(false);$product->setStoreId($storeId)->setThumbnail(false);$product->save();}
  • 这个“解决方案”对我不起作用!!!我有 magento 1.6.1

标签: php magento


【解决方案1】:

您的“简单解决方案”可以更简单;

foreach($product->getStoreIds() as $storeId) {
    $product->setStoreId($storeId)
        ->setImage(false)
        ->setSmallImage(false)
        ->setThumbnail(false)
        ->save();
}

【讨论】:

  • 这行不通!!!你也不能用 API 做到这一点(至少我不能)。我试图在最后一天解决这个问题。还是什么都没有=/
  • @karantan 它对 OP 来说已经足够好了。如果它对您“不起作用”,那么一定有其他原因或不同的原因。
【解决方案2】:

对于那些仍然有问题的人,我已经找到了 sql 解决方案:

DELETE FROM `catalog_product_entity_varchar` 
WHERE store_id IN (1,2,3,4)
      and entity_type_id=4 
      and (attribute_id=77 or attribute_id=78 or attribute_id=79);

在我的情况下,我想从我的所有商店视图中恢复默认图片视图(ID 为 1、2、3、4)

编辑:按照 Electric Jesus 的建议修改 SQL

【讨论】:

  • 可以将WHERE部分修改为WHERE store_id IN (1,2,3,4)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多