Como remover todas as fotos de um produto no Magento, programaticamente.
Para realizar essa operação, iremos utilizar o model “catalog/product_attribute_media_api”.
Carregando model:
$mediaApi = Mage::getModel("catalog/product_attribute_media_api");
Segundo passo é recuperar as fotos que estão associadas ao produto, para isso iremos precisar do ID do produto.
$mediaApiItems = $mediaApi->items($id);
Com “foreach” iremos percorrer todos os items, removendo um a um.
foreach($mediaApiItems as $item) { $datatemp=$mediaApi->remove($id, $item['file']); }
Repare no código acima a utilização do método “remove”, aonde passo o ID do produto no primeiro parâmetro e a foto no segundo.
Código completo para remover todas as fotos de um produto
$product = Mage::getModel('catalog/product')->load($id); set_time_limit(0); if(method_exists($product,'getId')){ $mediaApi = Mage::getModel("catalog/product_attribute_media_api"); $mediaApiItems = $mediaApi->items($id); foreach($mediaApiItems as $item) { $datatemp=$mediaApi->remove($product->getId(), $item['file']); } }
No código completo eu carrego o produto antes para validar se ele realmente exite.
Utilizo também a função “set_time_limit(0)”, passando o valor zero eu deixo sem limite de tempo de execução para nosso script.
Observação e links
Depois que você remover todas as fotos de um produto não esqueça de limpar o Cache do Magento: Limpando cache programaticamente
Caso você queira adicionar uma foto, neste post tem tutorial com código fonte de exemplo: Como adicionar uma imagem no produto programaticamente