Magento 2 – Como esconder o botão de adicionar ao carrinho.

Uma forma simples que segue os padrões de programação do Magento ensinando a como esconder o botão de adicionar ao carrinho no Magento 2.

O Magento 2 tornou-se o padrão para as plataformas de comércio eletrônico por causa da grande variedade de características incríveis e excelente experiência de compra do usuário na plataforma.

Por padrão, na loja Magento 2, o botão Adicionar ao carrinho está sempre disponível para os usuários convidados “guest users”. No entanto, os proprietários de lojas têm requisitos diferentes e há sempre o caso em que os donos da loja não desejam a visibilidade do botão para usuários convidados.

Neste tutorial, vou mostrar-lhe como você pode facilmente desativar ou ocultar o botão Adicionar ao carrinho no Magento 2 para usuários convidados. Seguindo as melhores práticas de desenvolvimento de código Magento, vou começar por criar um módulo personalizado.

Crie o Módulo

Comece configurando e registrando o módulo.

Crie module.xml em app / code / Takemiya / Hideaddtocart / etc e adicione este código ao arquivo:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Takemiya_Hideaddtocart" setup_version="1.0.1"></module>
</config>

Próximo passo, crie o arquivo registration.php em app / code / Takemiya / Hideaddtocart e adicione este código ao arquivo

<?php
 
\Magento\Framework\Component\ComponentRegistrar::register(
 \Magento\Framework\Component\ComponentRegistrar::MODULE,
 'Takemiya_Hideaddtocart',
 __DIR__
);

Neste ponto, posso direcionar o uso do Gerenciador de Objetos no módulo addtocart.phtml para verificar a sessão do usuário.

Criar evento e observador

Antes de ir mais longe, penso que é importante entender um pouco sobre os eventos e observers no Magento 2:

Magento 2 eventos

Quando uma ação específica é desencadeada, o evento é despachado pelos módulos Magento para passar dados para o Observador relevante configurado para o evento enviado.

Magento 2 observers

Os observers são usados para capturar a ação que foi desencadeada de eventos. Em observadores, você pode definir a funcionalidade ou lógica necessária que deve ser executada em resposta.

Para saber mais sobre os eventos e observadores do Magento 2, confira a documentação do DevDocs.

Agora, vou criar um evento que será acionado antes do layout ser carregado. Isso ajudará a verificar a sessão do cliente.

Para fazer isso, crie events.xml em app / code / Takemiya / Hideaddtocart / etc / frontend e adicione este código:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
 <event name="layout_load_before">
 <observer name="add_layout_handles" instance="Takemiya\Hideaddtocart\Observer\AddHandles" />
 </event>
</config>

Em seguida, crie o arquivo AddHandles.php no diretório app/ código / Takemiya / Hideaddtocart / Observer e adicione este código:

<?php
 
namespace Takemiya\Hideaddtocart\Observer;
 
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Customer\Model\Session as CustomerSession;
 
class AddHandles implements ObserverInterface
{
 protected $customerSession;
 public function __construct(CustomerSession $customerSession)
 {
 $this->customerSession = $customerSession;
 }
 
 public function execute(\Magento\Framework\Event\Observer $observer)
 {
 $layout = $observer->getEvent()->getLayout();
 
 if (!$this->customerSession->isLoggedIn())
 {
 $layout->getUpdate()->addHandle('customer_logged_out');
 }
 }
}

No código acima, você pode ver o construtor onde adicionei a sessão do cliente.

Então, na função execute (), adicionei o identificador customer_logged_out ao layout.

Para usar este identificador, crie um arquivo de layout customer_logged_out.xml em app / code / Takemiya / Hideaddtocart / view / frontend / layout e adicione este código para ele:

<?xml version="1.0"?>
 
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
 <body>
 <referenceBlock name="product.info.addtocart">
 <action method="setTemplate">
 <argument name="template" xsi:type="string">Takemiya_Hideaddtocart::catalog/product/view/addtocart.phtml</argument>
 </action>
 </referenceBlock>
 </body>
</page>

Criando arquivo PHTML
No arquivo customer_logged_out.xml, estabeleci o caminho do arquivo addtocart.phtml para usuários convidados.

Então, você precisa criar addtocart.phtml em app / code / Takemiya / Hideaddtocart / view / frontend / templates / catalog / product / view e adicione este código ao arquivo:

<?php
 
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
 
// @codingStandardsIgnoreFile
/** @var $block \Magento\Catalog\Block\Product\View */
?>
<?php $_product = $block->getProduct(); ?>
<?php if ($_product->isSaleable()): ?>
 
<div class="box-tocart">
 <p>Please <a href="<?php echo $block->getUrl('customer/account/login') ?>" title="<?php echo __('Login') ?>"><?php echo __('Login') ?></a> or <a href="<?php echo $block->getUrl('customer/account/create') ?>" title="<?php echo "Register" ?>"><?php echo "Register" ?></a> to buy this product!</p>
</div>
 
<?php endif; ?>

Executando os comandos
Para que o Magento 2 reconheça o novo módulo, você terá que executar os seguintes comandos nesta respectiva ordem:

(Atenção: Não teste este módulo no ambiente de produção antes de validar no ambiente de desenvolvimento)

php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
php bin/magento cache:clean
php bin/magento cache:flush
https://rogertakemiya.com.br/como-esconder-o-botao-de-adicionar-ao-carrinho-magento-2/
2018-03-20T20:27:51+00:00

RECEBA DICAS VALIOSAS NO SEU EMAIL

x