Como atualizar um produto no Magento programaticamente

Como atualizar um produto no Magento programaticamente, desdo estoque à descrição utilizando o próprio “model” do produto.

como atualizar um produto no magento programaticamente

Carregando o produto.

Primeiro, temos que carregar o objeto “model” do produto que desejamos atualizar.

$sku = "100034XB";

$id = Mage::getModel('catalog/product')->getIdBySku($sku);
	
$product = Mage::getModel('catalog/product')->load($id);

No código acima utilizo o método “getIdBySku”, para recuperar o ID e depois carrego nosso objeto utilizando o “load”.

Se você já tiver o ID, obviamente, pule a parte do “Sku”.

Roger, mais não existe um “loadBySku()”? Resposta: Não.

Você poderia até utilizar esse daqui:

 

$product = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku)

A função “loadByAttribute()” irá retornar o objeto, porém não relacionado com os objetos de “estoque” e “media”, no nosso exemplo que queremos atualizar todo o produto é melhor ter a disposição todo o objeto e suas relações.

Atualizando nome, descrição, preço…

Nome:

$product->setName($name);

Descrição:

$product->setDescription($description);

Preço:

$product->setPrice($price);

Mais alguns campos de exemplo:

// Descrição curta
$product->setShortDescription($short_description);

// Preço promocional
$product->setSpecialPrice($specialprice);

// SKU - unidade de controle de estoque, código único.
$product->setSku($sku );

// Dados sobre estoque
$stock_data=array(
  'use_config_manage_stock' => 1,
  'qty' => $stock_qty,
  'min_qty' => $stock_min_qty ,
  'use_config_min_qty'=>1,
  'min_sale_qty' => 1,
  'use_config_min_sale_qty'=>1,
  'max_sale_qty' => $stock_max_sale_qty,
  'use_config_max_sale_qty'=>1,
  'is_qty_decimal' => 0,
  'backorders' => 0,
  'notify_stock_qty' => 1,
  'is_in_stock' => $is_in_stock 
);

$product->setData('stock_data',$stock_data);

// Categorias
// Separando por virgula cada ID, exemplo: "2,3,43,59".
$product->setCategoryIds($category_ids_final);

// Status
$product->setStatus($status);

// Visibilidade
$product->setVisibility($visibility);

Definido os campos e valores que você deseja atualizar, basta agora executar o método “save()”.

$product->save();

E pronto, as alterações já estão salvas.

Não esqueça de atualizar o cache dos “blocos htmls” para ver as alterações no frontend.

 

Resumo
Como atualizar um produto no Magento programaticamente
Nome do Artigo
Como atualizar um produto no Magento programaticamente
Descrição
Atualizando um produto programaticamente no Magento, carregando o "model" do produto pelo ID ou SKU
Autor
Editor
Roger Mauricio Takemiya
Logo do Editor

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *