Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Avatar do usuário
Por Gusting
#79908
Boa tarde,


Gostaria de saber se existe algum código que faz com que o produto receba algum highlight (ressalte) que o produto já está no carrinho de alguma forma, seja com o botão de "comprar" trocando de cor ou aparecendo algum icone do lado do titulo do produto. Dei uma pesquisada "rápida" no google não achei nada, nem no fórum da OC North America não tem nada.


Qualquer ajuda é super bem vinda, pois como estou começando com o OC, então, seja com uma ideia de como fazer, por favor me dê essa força!


Grato desde já!
Gust.
(P.S.: Se abri o tópico em categoria errada, peço perdão desde já.)
#79916
Olá @reds ,


Primeiramente obrigado por responder, porém não estou podendo comprar extensões pois fica "inviável" ao meu chefe, por isso estou aceitando ideias de como dar pelo menos um "check" no status do produto estar ou não dentro do carrinho.

Edit: Estou mexendo com os js do OC, porém só necessito de saber como checar se o produto está ou não no carrinho, alguma função ou algo do tipo, por exemplo: "json['total']" que é utilizado pra calcular o total de produtos presente dentro do carrinho.

Grato,
Gust.
#79919
Para verificar os produtos que estão no carrinho, você pode utilizar a biblioteca do carrinho em PHP, conforme abaixo:
$this->cart->getProducts();

Lembrando que essa função retornará todos os produtos do carrinho em um array, então basta você ler esse array para saber quais produtos já estão no carrinho.

Espero ter ajudado. :)
Gusting gostou disso
#79923
Olá, @Manoel Vidal


Obrigado pela resposta e pela ajuda, eu esqueci de editar, mas já tinha visto tal função, agora estou tentando acoplar o PHP com o JS, para que sempre que houver o (re)load da página dar um check em cada produto no cart e trocar a função do botão que está no produto, porém agora eu estou ficando completamente perdido, pois não faço ideia de como fazer tal acoplamento, vi que precisaria do AJAX pra utilizar a função do PHP sempre que houver o load da página, coisa que eu não gostaria de utilizar, pois já estou em processo de aprendizagem com PHP e JS, então se houver alguma luz que vocês puderem me dar, eu ficaria grato demais.


Mas por toda via, obrigado pelas respostas!
Gust.

Edit: Aliás, achei esse código que "trava" o acréscimo de itens no carrinho:
Código: Selecionar todos
public function add() {
		$this->load->language('checkout/cart');

		$json = array();

		if (isset($this->request->post['product_id'])) {
			$product_id = (int)$this->request->post['product_id'];
		} else {
			$product_id = 0;
		}
		
		$existing = $this->cart->getProducts();
		$cant_add = false;
		if ($existing) {
			foreach ($existing as $exists) {
				if ($exists['product_id'] = $product_id) {
					$cant_add = true;
					break;
				}
			}
		}

		$this->load->model('catalog/product');

//		$product_info = $this->model_catalog_product->getProduct($product_id);

		if ($cant_add) {
			$product_info = '';
			$json['error']['add'] = 'Cant add product';
		} else {
			$product_info = $this->model_catalog_product->getProduct($product_id);
		}

		if ($product_info) {
			if (isset($this->request->post['quantity'])) {
				$quantity = (int)$this->request->post['quantity'];
			} else {
				$quantity = 1;
			}
A ideia seria similar, pois ele checa se tem no carrinho se já possui o produto e "trava" o botão, deixando ele clicável, porém inútil, só que ao invés de travar, trocaria o style do botão para "No carrinho" e deixar ele de outra cor, pra ressaltar.
#79924
Primeiramente obrigado por responder, porém não estou podendo comprar extensões pois fica "inviável" ao meu chefe, por isso estou aceitando ideias de como dar pelo menos um "check" no status do produto estar ou não dentro do carrinho.
Quanto seu chefe cobrou no projeto que não pode investir cerca de R$ 100.00 (com o dólar atual etc) para a compra de uma extensão?
Obrigado pela resposta e pela ajuda, eu esqueci de editar, mas já tinha visto tal função, agora estou tentando acoplar o PHP com o JS, para que sempre que houver o (re)load da página dar um check em cada produto no cart e trocar a função do botão que está no produto, porém agora eu estou ficando completamente perdido, pois não faço ideia de como fazer tal acoplamento, vi que precisaria do AJAX pra utilizar a função do PHP sempre que houver o load da página, coisa que eu não gostaria de utilizar, pois já estou em processo de aprendizagem com PHP e JS, então se houver alguma luz que vocês puderem me dar, eu ficaria grato demais.
Você pode editar o arquivo catalog/controller/product/product.php por exemplo, e onde tem
Código: Selecionar todos
$data['product_id'] = (int)$this->request->get['product_id'];
Fazer algo como:
1) Busca os produtos no carrinho usando o $products = $this->cart->getProducts(); sugerido pelo @Manoel Vidal
2) Se o product_id estiver no carrinho você criar algo como: $data['produto_no_carrinho'] = true;

Depois em catalog/view/theme/default/template/product/product.twig em:
Código: Selecionar todos
<button type="button" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');"><i class="fas fa-shopping-cart"></i> <span class="d-none d-lg-inline">{{ button_cart }}</span></button>
você faz um IF para verificar o "produto_no_carrinho" e aplicar o css correspondente.
#79933
Olá @denisbr ,

Primeiramente obrigado pela atenção, agora sobre:
denisbr escreveu: 22 Nov 2018, 15:46 Quanto seu chefe cobrou no projeto que não pode investir cerca de R$ 100.00 (com o dólar atual etc) para a compra de uma extensão?
Eu sou pago por hora e ainda sou "tratado" como Estagiário, então não recebo muito e não tenho muita voz ativa na empresa para pedir que eles invistam 100 reais em "negócio que eu poderia fazer eu mesmo." (Querendo ou não, é essa visão de empresa de interior)
denisbr escreveu: Você pode editar o arquivo catalog/controller/product/product.php por exemplo, e onde tem
Código: Selecionar todos
$data['product_id'] = (int)$this->request->get['product_id'];
Fazer algo como:
1) Busca os produtos no carrinho usando o $products = $this->cart->getProducts(); sugerido pelo @Manoel Vidal
2) Se o product_id estiver no carrinho você criar algo como: $data['produto_no_carrinho'] = true;

Depois em catalog/view/theme/default/template/product/product.twig em:
Código: Selecionar todos
<button type="button" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');"><i class="fas fa-shopping-cart"></i> <span class="d-none d-lg-inline">{{ button_cart }}</span></button>
você faz um IF para verificar o "produto_no_carrinho" e aplicar o css correspondente.
Obrigado pela ideia, porém não sei onde errei, mas não funcionou, acho que foi na hora de chamar a checkagem ou algo do tipo.

Enfim, acho que o negócio vai ser tirar os 100 do meu bolso mesmo, porque já perdi um tempo tentando fazer isso e nada dá certo.

Obrigado a todos que responderam,
Gust.
#79942
Gusting escreveu:Eu sou pago por hora e ainda sou "tratado" como Estagiário, então não recebo muito e não tenho muita voz ativa na empresa para pedir que eles invistam 100 reais em "negócio que eu poderia fazer eu mesmo." (Querendo ou não, é essa visão de empresa de interior)

Se você está sendo pago por hora, compra o módulo e cobra isso em forma de hora trabalhada!

Gente preciso de ajuda urgente. Na migraç&a[…]

Caro @reds , muito obrigado pela resposta.

PHP 8+ incompatibilidade

Toda tradução para a versão 3[…]

Ola @alex3257 Se você precisa apenas ver […]