<?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
Magento 2 eventos
Magento 2 observers
<?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
Dúvidas em como proceder com os comandos no Magento 2?
Consulte: https://rogertakemiya.com.br/comandos-sem-o-acesso-ssh-magento-2/
Ver comentários
Boa tarde Roger, muito obrigado pelo conteúdo. Mas como faço para esconder o botão de adicionar o carrinho nas outras páginas (página principal, ao ver o produto nas categorias)? Porque continua aparecendo...