Скрыть вкладку пользовательских продуктов Magento 2 от гостевых клиентов - PullRequest
0 голосов
/ 18 июня 2020

Я создал модуль Magento 2, который создает настраиваемую вкладку на странице продукта. Как я могу скрыть содержимое этой вкладки от гостя и отобразить сообщение? Спасибо

1 Ответ

0 голосов
/ 19 июня 2020

Вы можете сделать это двумя способами в шаблонах, напрямую с помощью диспетчера объектов или с предпочтением блока, который отображает шаблон:

В вашем файле модуля etc / di. xml добавьте предпочтение для блок, который отображает шаблон. Я думаю, что это Magento\Catalog\Block\Product\View, но не уверен на 100%.

<config>
    <preference for="Magento\Catalog\Block\Product\View"
            type="Vendor\Module\Block\Product\View" />
</config>

Затем создайте файл Vendor / Module / Block / Product / View. php

<?php
namespace Vendor\Module\Block\Product;

class View extends \Magento\Catalog\Block\Product\View
{
     public function isCustomerLoggedIn()
     {
         return $this->_customerSession->isLoggedIn();
     }
}

И в файл шаблона используйте функцию для проверки входа в систему и выполнения других действий.

if ($block->isCustomerLoggedIn()) {
    // Customer is logged in
} else {
    // Customer is not logged in
}

ИЛИ используйте диспетчер объектов внутри файла шаблона:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerSession = $objectManager->get('Magento\Customer\Model\Session');
if($customerSession->isLoggedIn()) {
   // Customer is logged in
} else {
   // Customer is not logged in
}

EDIT:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerSession = $objectManager->get('Magento\Framework\App\Http\Context');
$isLoggedIn = $customerSession->getValue(\Magento\Customer\Model\Context::CONTEXT_AUTH);

    if($isLoggedIn){
        // Logged In
    }else{
        // Not Logged In
    }

Objectmanager прост, но он не использует внедрение зависимостей, что делает magento2 таким приятным. (Думаю, в этом причина)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...