2017-06-06 6 views
0

製品イメージを新しいイメージに置き換える必要があります。
位置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), 

この行の下に名前を変更した場合にのみです。
元のファイル名を保持する必要があります。
なぜこれが起こっていますか?

答えて

0

まだ古いイメージが表示されていますが、新しいイメージがディスクの2番目の位置に挿入されているかどうかを確認していることがわかりますか?

新しい画像が挿入された場合は、おそらくadmin、システム - >キャッシュ管理&すべてのキャッシュをリフレッシュする+カタログイメージキャッシュをフラッシュしてください。

他のブラウザでも確認してください。

ありがとうございます。

+0

私はキャッシングの問題だと考える前にこれを試しましたが、うまくいかなかったのです。 – altoids

+0

CDNを使用していますか?はいの場合は、CDNをリフレッシュする必要があります。 –

0

このワン 新しいイメージはおそらくその後、挿入した場合、あなたは、システム管理者に行く必要がない - >キャッシュの管理は、フラッシュカタログイメージキャッシュを喜ばすべてのキャッシュをリフレッシュ+ &

キャッシュをクリアした後、それは動作します

+0

キャッシュの問題だと思う前にこれを試しましたが、うまくいかなかった – altoids

+0

デモ管理リンクを共有したり、この機能にしかアクセスできないユーザーを作成することは可能ですか –

関連する問題