製品イメージを新しいイメージに置き換える必要があります。
位置2の画像を新しい画像に置き換える必要があります。
これは私のコードです。
Magentoの製品イメージを交換するにはどうすればいいですか?
$position = 2;//this is the image to delete
$file_location = "../WS-Access-000036-Black-2.jpg";
$sku = "WS-Access-000036-Black";
//delete image
$mediaApi = Mage::getModel("catalog/product_attribute_media_api");
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
$product_id = $product->getId();
$items = $mediaApi->items($product_id);
foreach($items as $item){
if($item['position']=="$position" or ($position==1 and $item['position']=="0")){
$mediaApi->remove($product_id, $item['file']);//this doesnt remove file from directory
$image_location = Mage::getBaseDir('media') . DS . 'catalog' . DS . 'product' . $item['file'];
unlink ($image_location);//have to use this to delete image from disk because $mediaApi->remove doesn't delete it from disk
break;
}
}
//end delete image
//EVERYTHING UP TO HERE WORKS, THE IMAGE IS DELETED FROM THE DISK AND
//IN THE BACKEND OF THE PRODUCT
//save new image
$pathInfo = pathinfo($file_location);
switch($pathInfo['extension']){
case 'png':
$mimeType = 'image/png';
break;
case 'jpg':
$mimeType = 'image/jpeg';
break;
case 'gif':
$mimeType = 'image/gif';
break;
}
$types = ($position == 1) ? array('image', 'small_image', 'thumbnail') : array();
$newImage = array(
'file' => array(
'content' => base64_encode($file_location),
'mime' => $mimeType,
'name' => pathinfo($sku."-".$position, PATHINFO_FILENAME),
),
'label' => '',
'position' => $position,
'types' => $types,
'exclude' => 0,
);
$media = Mage::getModel('catalog/product_attribute_media_api');
$media->create($sku, $newImage);
//end save new image
私の問題は、私は、ディスクや製品のギャラリーから画像WS-アクセス-000036-ブラック-2.JPGを削除するとき、私は、新しいWS-アクセス-000036-ブラック-2.JPGを追加することです製品ギャラリーに古いWS-Access-000036-Black-2.jpgがロードされます。
私はそのキャッシュの問題を考えていますが、私はキャッシュをクリアして、古いイメージはロードし続けます。
それはすべてが正常に動作することを私は
'name' => pathinfo($sku."-".$position, PATHINFO_FILENAME),
この行の下に名前を変更した場合にのみです。
元のファイル名を保持する必要があります。
なぜこれが起こっていますか?
私はキャッシングの問題だと考える前にこれを試しましたが、うまくいかなかったのです。 – altoids
CDNを使用していますか?はいの場合は、CDNをリフレッシュする必要があります。 –