foto
Alisson O Blog

Alisson O Blog

Magento e os idiomas que o computador fala…

Magento: Limpando produtos do carrinho

16 de outubro de 2009

Estamos montando um Magento multi-website aqui na Indexa em que os produtos não podem ser compartilhados entre as lojas de maneira alguma! E, em alguns momentos, o Magento acaba permitindo isso (como numa recompra, ou compartilhando itens salvos em um carrinho) colocando produtos de um website no carrinho de outro! Acredito que este seja um pequeno bug (principalmente na parte da recompra).

Para resolver este problema, e limpar só os produtos QUE NÃO SÃO DO WEBSITE ATUAL no carrinho, use o código a seguir:

foreach( Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection() as $item )
{
   if ($item->getStore()->getCode() != Mage::app()->getWebsite()->getCode())
   {
      Mage::getSingleton('checkout/cart')->removeItem( $item->getId() )->save();
   }
}

Eu acabei colocando esta função no arquivo app/code/core/Mage/Customer/Model/Session.php, dentro da função login. Pra mim isto foi o ideal, pois o meu maior problema era o de usuários antigos que vinham com produtos de outra loja no momento do login. Este código também pode ser colocado no app/design/frontend/default/SEUTEMA/template/page/html/header.phtml, por exemplo, que é carregado em toda página, fazendo essa limpeza a todo momento (e deixando o core intacto).

IMPORTANTE: Ele também pode ser usado sem o if que faz a verificação da loja, para limpar todos os produtos do carrinho.

Caso sua limpeza tenha de ser completa, e envolve toda a sessão do carrinho (métodos de envio, métodos de pagamento…), o código abaixo seria bem útil:

Mage::getSingleton('checkout/session')->clear();

Abraço!

Tags: , , , , , , ,

Deixe um comentário



© 2014 - Indexa Ltda. Todos os direitos reservados.