Magento 2: Làm thế nào để sử dụng Trình xử lý bố cục customer_logged_in?


9

Magento 2 có xử lý như customer_logged_in không? Nếu có, làm thế nào tôi có thể sử dụng nó?

Tôi đã cố gắng để tạo ra

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

và thêm vào đó <referenceBlock name="content" remove="true" />

Nhưng khối nội dung không bị xóa. Tôi đã đổi tên tập tin xử lý thành mặc định và khối đã được gỡ bỏ thành công.

Tôi đang làm gì sai?

Câu trả lời:


9

Trả lời câu hỏi của bạn chắc chắn là không, không còn customer_logged_inxử lý nữa, tôi đã đào sâu vào mã và không thể tìm thấy bất kỳ xử lý bố cục nào có thể thực hiện thủ thuật.

Trên đó, \dev\tests\static\testsuite\Magento\Test\Legacy\LayoutTest.phpbạn có thể tìm thấy đoạn mã sau:

/**
 * 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',
];

Mà với tôi, rõ ràng cho chúng ta biết rằng customer_logged_inxử lý bố trí đã lỗi thời.

Xem câu trả lời của Fabian để được giải thích về cách thực hiện ngay bây giờ trong Magento 2.


1
những sự kiện đó được kích hoạt khi khách hàng đăng nhập và khi anh ta đăng xuất , không phải trên mỗi yêu cầu.
Fabian Schmengler 15/03/2016


8

Như những người khác đã chỉ ra, những tay cầm này đã biến mất. Nếu bạn nhìn vào mô-đun Magento_Customer, bạn sẽ thấy các khối như liên kết đăng ký luôn được thêm nhưng không được hiển thị nếu khách hàng đăng nhập . Có vẻ như đây là cách ưa thích để hiển thị các yếu tố có điều kiện tùy thuộc vào trạng thái đăng nhập.

Nhưng đây không phải là một giải pháp để loại bỏ các khối dựa trên tên của chúng, được xác định ở một nơi khác. Bạn có thể tạo lại tính năng với một người quan sát cho layout_load_beforecác cuộc gọi đó $layout->addHandle('customer_logged_in')nếu khách hàng đăng nhập.


Cám ơn phản hồi của bạn. Chắc chắn tôi nghĩ về việc thêm xử lý trong mô-đun tùy chỉnh của tôi. Nhưng nó có thể trông giống như tăng đột biến và tôi muốn sử dụng cách bản địa hơn. Cảm ơn đã giải thích và ví dụ
zhartaunik 15/03/2016

0

Điều này rất ngu ngốc. Tôi cần tải block / template / resference chỉ khách hàng mới có quyền, không chỉ loggin hay loggout. Nhưng tôi cần phải viết 1000 dòng mã để kiểm tra xem người dùng có được phép xem điều này không. Chỉ đẹp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.