В Magento 2 доступны те же способы условного показа блоков, что и в Magento 1.x.
В простом случае, если видимость экранного блока задаётся значением административной настроечной опции, то Вы можете использовать стандартное и унаследованное из Magento 1.x выражение ifconfig
:
<referenceContainer name='form.buttons'>
<block
class='Dfe\Google\Block\Backend\Template'
name='Dfe_Google_Backend_Buttons'
template='buttons.phtml'
after='adminhtml_auth_login_buttons'
ifconfig='dfe_google/login/enable'
/>
</referenceContainer>
Если же логика показа / скрытия экранного блока более сложна, то Вы можете перекрыть метод \Magento\Framework\View\Element\AbstractBlock::toHtml()
.
Если Вы вернёте пустую строку в качестве результата этого метода, то Ваш блок, не будет виден:
<?php
namespace Dfe\Facebook\Block;
class Login extends \Magento\Framework\View\Element\Html\Link {
/**
* @override
* @see \Magento\Framework\View\Element\Html\Link::toHtml()
* @return string
*/
public function toHtml() {return !rm_customer_logged_in() ? parent::toHtml() : '';}
}
Этот пример использует функцию rm_customer_logged_in
, которая определяет, авторизован ли текущий посетитель витрины или анонимен.