Magento 2: Bagaimana cara menggunakan Tata Letak customer_logged_in?

9

Apakah Magento 2 memiliki pegangan seperti customer_logged_in ? Jika ya, bagaimana saya bisa menggunakannya?

Saya mencoba membuat

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

dan ditambahkan di sana <referenceBlock name="content" remove="true" />

Tapi blok konten tidak dihapus. Saya mengganti nama menangani file menjadi default dan blok berhasil dihapus.

Apa yang saya lakukan salah?

zhartaunik
sumber

Jawaban:

9

Jawaban untuk pertanyaan Anda pasti tidak, tidak ada customer_logged_inpegangan lagi, saya sudah menggali ke dalam kode dan tidak dapat menemukan tata letak pegangan yang bisa melakukan trik.

Di atas semua itu di bawah \dev\tests\static\testsuite\Magento\Test\Legacy\LayoutTest.phpAnda dapat menemukan kode berikut:

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

Yang bagi saya, dengan jelas memberitahu kita bahwa customer_logged_inpegangan tata letak sudah usang sekarang.

Lihat jawaban Fabian untuk penjelasan tentang bagaimana hal itu dilakukan sekarang di Magento 2.

Raphael di Digital Pianism
sumber
1
peristiwa-peristiwa itu dipicu ketika pelanggan log in dan ketika dia logout , tidak pada setiap permintaan.
Fabian Schmengler
8

Seperti yang orang lain tunjukkan, pegangan ini sekarang hilang. Jika Anda melihat modul Magento_Customer, Anda akan melihat bahwa blok seperti tautan pendaftaran selalu ditambahkan tetapi tidak dirender jika pelanggan masuk . Sepertinya ini sekarang merupakan cara yang disukai untuk menunjukkan elemen secara kondisional tergantung pada status login.

Tapi ini bukan solusi untuk menghilangkan blok berdasarkan namanya, yang didefinisikan di tempat lain. Anda bisa membuat ulang fitur dengan pengamat untuk layout_load_beforepanggilan itu $layout->addHandle('customer_logged_in')jika pelanggan masuk.

Fabian Schmengler
sumber
Terimakasih atas tanggapan Anda. Tentu saya berpikir tentang menambahkan pegangan itu di modul khusus saya. Tapi itu bisa terlihat seperti spike dan saya ingin menggunakan cara yang lebih asli. Terima kasih atas penjelasan dan contohnya
zhartaunik
0

Ini sangat bodoh. Saya perlu memuat blok / templat / sumber daya hanya pelanggan memiliki izin, bukan hanya loggin atau loggout. Tetapi saya perlu menulis 1000 baris kode untuk memeriksa apakah pengguna memiliki izin untuk melihatnya. Cantik sekali.

pengguna2386643
sumber