Magento 2: วิธีใช้ Layout Handle 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


1
เหตุการณ์เหล่านั้นจะถูกทริกเกอร์เมื่อลูกค้าเข้าสู่ระบบและเมื่อเขาออกจากระบบไม่ได้ทุกคำขอ
Fabian Schmengler


8

ตามที่คนอื่น ๆ ได้ชี้ให้เห็นแล้วที่จับเหล่านี้หายไปแล้ว หากคุณดูที่โมดูล Magento_Customer คุณจะเห็นว่ามีการเพิ่มบล็อกเช่นลิงค์ลงทะเบียนเสมอแต่จะไม่แสดงผลหากลูกค้าเข้าสู่ระบบไม่ได้แสดงหากลูกค้าถูกบันทึกลงในดูเหมือนว่าตอนนี้เป็นวิธีที่ต้องการแสดงองค์ประกอบตามเงื่อนไขโดยขึ้นอยู่กับสถานะการเข้าสู่ระบบ

แต่นี่ไม่ใช่ทางออกสำหรับการลบบล็อกตามชื่อของพวกเขาซึ่งถูกกำหนดไว้ที่อื่น คุณสามารถสร้างคุณสมบัติใหม่โดยใช้ผู้สังเกตการณ์สำหรับการlayout_load_beforeโทรนั้น$layout->addHandle('customer_logged_in')หากลูกค้าลงชื่อเข้าใช้


ขอบคุณสำหรับคำตอบของคุณ แน่ใจว่าฉันคิดเกี่ยวกับการเพิ่มการจัดการในโมดูลที่กำหนดเองของฉัน แต่มันอาจดูเหมือนขัดขวางและฉันต้องการใช้วิธีดั้งเดิมมากขึ้น ขอบคุณสำหรับคำอธิบายและตัวอย่าง
zhartaunik

0

นี่มันโง่มาก ฉันต้องการโหลด block / template / resourse เฉพาะลูกค้าเท่านั้นที่ได้รับอนุญาตไม่ใช่แค่ loggin หรือ loggout แต่ฉันต้องเขียนโค้ด 1,000 บรรทัดเพื่อตรวจสอบว่าผู้ใช้ได้รับอนุญาตให้ดูหรือไม่ สวยงาม.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.