Odpowiedź na twoje pytanie jest zdecydowanie nie, nie ma customer_logged_injuż żadnego uchwytu, zagłębiłem się w kod i nie mogłem znaleźć żadnego uchwytu układu, który mógłby załatwić sprawę.
Oprócz tego \dev\tests\static\testsuite\Magento\Test\Legacy\LayoutTest.phpmożesz znaleźć następujący kod:
/**
* 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',];
Co dla mnie wyraźnie mówi nam, że customer_logged_inuchwyt układu jest teraz przestarzały.
Zobacz odpowiedź Fabiana, by dowiedzieć się, jak to się teraz robi w Magento 2.
zdarzenia te są wyzwalane, gdy klient loguje się i kiedy się wylogowuje , nie na każde żądanie.
Fabian Schmengler,
8
Jeśli ktoś nadal ma z tym problem, napisałem szybki moduł, który dodaje uchwyty układu customer_logged_in i customer_logged_out do użycia tak jak w Magento 1
Jak zauważyli inni, tych uchwytów już nie ma. Jeśli spojrzysz na moduł Magento_Customer, zobaczysz, że bloki takie jak link rejestracyjny są zawsze dodawane, ale nie renderowane, jeśli klient jest zalogowany . Wygląda na to, że jest to obecnie preferowany sposób warunkowego wyświetlania elementów w zależności od stanu logowania.
Ale to nie jest rozwiązanie do usuwania bloków na podstawie ich nazw, które zostały zdefiniowane gdzie indziej. Możesz odtworzyć tę funkcję z obserwatorem dla layout_load_beforetych połączeń, $layout->addHandle('customer_logged_in')jeśli klient jest zalogowany.
Dzięki za twoją odpowiedź. Pewnie pomyślałem o dodaniu uchwytu w moim niestandardowym module. Ale może to wyglądać jak kolec i chciałem użyć bardziej natywnego sposobu. Dzięki za wyjaśnienie i przykład
zhartaunik
0
To jest bardzo głupie. Muszę załadować blok / szablon / zasób tylko klient ma uprawnienia, a nie tylko logowanie lub wylogowanie. Ale muszę napisać 1000 wierszy kodu, aby sprawdzić, czy użytkownik ma pozwolenie na to. Po prostu pięknie.
Jeśli ktoś nadal ma z tym problem, napisałem szybki moduł, który dodaje uchwyty układu customer_logged_in i customer_logged_out do użycia tak jak w Magento 1
http://frankclark.xyz/modules/magento-2-get-customer_logged_in-and-customer_logged_out-layout-handles
Cieszyć się !
źródło
Jak zauważyli inni, tych uchwytów już nie ma. Jeśli spojrzysz na moduł Magento_Customer, zobaczysz, że bloki takie jak link rejestracyjny są zawsze dodawane, ale nie renderowane, jeśli klient jest zalogowany . Wygląda na to, że jest to obecnie preferowany sposób warunkowego wyświetlania elementów w zależności od stanu logowania.
Ale to nie jest rozwiązanie do usuwania bloków na podstawie ich nazw, które zostały zdefiniowane gdzie indziej. Możesz odtworzyć tę funkcję z obserwatorem dla
layout_load_before
tych połączeń,$layout->addHandle('customer_logged_in')
jeśli klient jest zalogowany.źródło
To jest bardzo głupie. Muszę załadować blok / szablon / zasób tylko klient ma uprawnienia, a nie tylko logowanie lub wylogowanie. Ale muszę napisać 1000 wierszy kodu, aby sprawdzić, czy użytkownik ma pozwolenie na to. Po prostu pięknie.
źródło