마 젠토 2 : 레이아웃 핸들을 사용하는 방법 customer_logged_in?


9

Magento 2에는 customer_logged_in 과 같은 핸들이 있습니까? 그렇다면 어떻게 사용할 수 있습니까?

나는 만들려고

../view/frontend/layout/customer_logged_in.xml

거기에 추가 <referenceBlock name="content" remove="true" />

그러나 콘텐츠 차단은 제거되지 않았습니다. 핸들 파일의 이름을 기본값으로 바꾸고 블록이 성공적으로 제거되었습니다.

내가 무엇을 잘못하고 있지?

답변:


9

귀하의 질문에 대한 대답은 확실히 아니요, 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레이아웃 핸들이 더 이상 사용되지 않는다는 것을 분명히 알려줍니다 .

Magento 2에서 현재 수행되는 방법에 대한 설명은 Fabian의 답변을 참조하십시오.


1
이러한 이벤트는 모든 요청이 아닌 고객이 로그인 할 때와 로그 아웃 할 때 트리거됩니다 .
Fabian Schmengler


8

다른 사람들이 지적 했듯이이 핸들은 이제 사라졌습니다. Magento_Customer 모듈을 보면 고객이 로그인 한 경우 등록 링크와 같은 블록이 항상 추가 되지만 렌더링되지는 않습니다 . 이제 로그인 상태에 따라 조건부로 요소를 표시하는 데 선호되는 방법 인 것 같습니다.

그러나 이것은 다른 곳에서 정의 된 이름을 기준으로 블록을 제거하는 솔루션이 아닙니다. 고객이 로그인 한 경우 layout_load_before해당 통화에 대한 관찰자로 기능을 다시 작성할 수 $layout->addHandle('customer_logged_in')있습니다.


답변 주셔서 감사합니다. 물론 내 사용자 지정 모듈에 핸들을 추가하는 것에 대해 생각했습니다. 그러나 그것은 스파이크처럼 보일 수 있으며 더 네이티브 방식을 사용하고 싶었습니다. 설명과 예를 주셔서 감사합니다
zhartaunik

0

이것은 매우 바보입니다. 고객은 loggin 또는 loggout뿐만 아니라 권한 만 가지고 블록 / 템플릿 / 리소스를로드해야합니다. 그러나 사용자가 이것을 볼 권한이 있는지 확인하려면 1000 줄의 코드를 작성해야합니다. 그냥 아름답다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.