Pergunta

Escrevi um script que procura produtos sem categorias ativas e desativa os produtos.Isso ocorreu em relação ao nosso cliente ter desativado algumas categorias antigas, mas os produtos ainda podiam ser pesquisados.Achamos que seria melhor definir o status deles como desativado em massa.

Então, para fazer isso, chamamos esta linha:

Mage::getModel('catalog/product_status')->updateProductStatus($prod->getId(), $store_id, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);

Então, uma semana depois, precisamos reativar um produto.Entro no painel de administração e o status ainda aparece como "ativado".Levei meu script novamente, codificando o ID para que ele aparecesse na loja novamente:

Mage::getModel('catalog/product_status')->updateProductStatus(370, $store_id, Mage_Catalog_Model_Product_Status::STATUS_ENABLED);

Obviamente, minha intenção era que o status no painel de administração fosse desativado e qualquer usuário com acesso de administrador pudesse reativar esses produtos.Então estou perguntando à comunidade: o que as linhas acima realmente fazem?E como posso fazer o que pretendo.

Foi útil?

Solução

Esta é uma questão de duas partes.

Primeiro você está dizendo:

Isso ocorreu em relação ao nosso cliente ter desativado algumas categorias antigas, mas os produtos ainda podiam ser pesquisados.

Em vez de "desabilitar", eu criaria um script que alterasse a visibilidade de "Catálogo, Pesquisa" para apenas "Catálogo"

Este código ficaria parecido com isto:

$productId = ???;
$product = Mage::getModel('catalog/product');
$product->load($productId);
$product->setVisibility(2);
$product->save();

Você também precisaria de um código para pesquisar e retornar a visibilidade caso ela voltasse para uma categoria.

Observação:Como você tem vários sites, pode ser necessário adicionar código especificamente ao ID de um site.Além disso, como você tem vários administradores alterando os dados do produto, um registrador de administrador seria uma ótima ideia, já que ouvi histórias horríveis sobre usuários administradores aleatórios alterando os dados do produto.

A segunda parte da questão é

O que as linhas acima realmente fazem?

O código desabilita e habilita produtos, mas parece que você encontrou um problema.Existem outras maneiras de fazer isso também, mas o que você postou acima é a forma mais comum (especialmente no SE).O que eu observaria é se o seu atributo "status" é uma variável global ou de site.Por padrão é "site".Eu daria uma olhada no que acontece quando você está no painel de administração, se você está na visualização padrão ou se está na visualização específica do site.O código acima sempre parecerá “Ativado” na visualização padrão, mas será desativado na visualização do site.

Eu criaria um log personalizado em seu script para ver qual produto foi alterado e quando foi alterado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top