我的图片更新存在重大问题。
我正在使用此代码:
public function __construct(){
...
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$this->product = Mage::getModel('catalog/product')->loadByAttribute('sku',$this->artnr);
}
/**
* Update Images
*/
protected function updateImages(){
//Remove Existing Images to Reupload them
$mediaApi = Mage::getModel("catalog/product_attribute_media_api");
try{
$items = $mediaApi->items($this->product->getId());
foreach($items as $item){
$mediaApi->remove($this->product->getId(),$item['file']);
$unlinkImage = Mage::getBaseDir('media').DS.'catalog'.DS.'product'.$item['file'];
@unlink($unlinkImage);
}
}catch(Exception $e){
Mage::log($e->getMessage());
}
if(count($this->import['shop']['images'])>0){
//write images into directory
//and run Import
$currentimage = 0;
$mediaAttribute = array(
'thumbnail',
'small_image',
'image'
);
if(count($this->import['shop']['images'])>0){
foreach($this->import['shop']['images'] as $image){
$file = $this->importDir.$image['image_name'];
file_put_contents($file,$image['image']);
if($currentimage===0){
$this->product->addImageToMediaGallery($file,$mediaAttribute,false,false);
}else{
$this->product->addImageToMediaGallery($file,null,false,false);
}
$currentimage++;
}
}
}
}
当我输出媒体库
时Mage::log($this->product->getMediaGallery());
我得到了这个输出:
[images] => Array
(
[0] => Array
(
[file] => /5/d/5de102a28622997e5eba689689878570_5.jpg
[position] => 1
[label] =>
[disabled] => 0
)
[1] => Array
(
[file] => /C/o/Cookie_4_1.png
[position] => 2
[label] =>
[disabled] => 0
)
[2] => Array
(
[file] => /p/o/post2_16_1.jpg
[position] => 3
[label] =>
[disabled] => 0
)
)
这么好。 但如果我查看媒体库数据库,我会得到这个:
784|703|244|/5/d/5de102a28622997e5eba689689878570_5.jpg|
785|703|244|/C/o/Cookie.png
786|703|244|/p/o/post2.jpg
787|703|244|/5/d/5de102a28622997e5eba689689878570_5_1.jpg
788|703|244|/C/o/Cookie_1.png
789|703|244|/p/o/post2_1.jpg
所以它们存储在double中。 文件只存储一次。 如果我查看后端,我会看到一个存在的,一个不存在的......
我不知道自己错在哪里,希望有人能帮助我。
答案 0 :(得分:0)
看起来,Magento 1.7的API将图像保存为double。 通过简单地检查图像是否存在于文件系统中来绕过这一点。 如果不是,则删除条目。 谢谢你的帮助。