Answers:
您的问题的答案肯定不是,没有customer_logged_in
句柄了,我已经研究了代码,找不到任何可以解决问题的布局句柄。
在此之下,\dev\tests\static\testsuite\Magento\Test\Legacy\LayoutTest.php
您可以找到以下代码:
/**
* List of obsolete nodes
*
* @var array
*/
protected $_obsoleteNodes = [
'PRODUCT_TYPE_simple',
'PRODUCT_TYPE_configurable',
'PRODUCT_TYPE_grouped',
'PRODUCT_TYPE_bundle',
'PRODUCT_TYPE_virtual',
'PRODUCT_TYPE_downloadable',
'PRODUCT_TYPE_giftcard',
'catalog_category_default',
'catalog_category_layered',
'catalog_category_layered_nochildren',
'customer_logged_in',
'customer_logged_out',
'customer_logged_in_psc_handle',
'customer_logged_out_psc_handle',
'cms_page',
'sku_failed_products_handle',
'catalog_product_send',
'reference',
];
对我来说,这显然告诉我们customer_logged_in
布局句柄现在已过时。
请参阅Fabian的答案以获取有关如何在Magento 2中完成操作的说明。
如果有人还在为此苦苦挣扎,我写了一个快速模块,添加了customer_logged_in和customer_logged_out布局句柄,供您像在Magento 1中一样使用
请享用 !
正如其他人指出的那样,这些句柄现在不见了。如果查看Magento_Customer模块,将会看到总是添加了诸如注册链接之类的块,但是如果客户已登录则不会呈现它们。现在看来,这是根据登录状态有条件地显示元素的首选方式。
但是,这不是一种根据块的名称删除块(在其他位置定义)的解决方案。如果客户已登录,则可以使用layout_load_before
该调用的观察者来重新创建功能$layout->addHandle('customer_logged_in')
。