Magento 2: Layout Handle nasıl kullanılır?


9

Magento 2'de customer_oked_in var mı? Cevabınız evet ise nasıl kullanabilirim?

Yaratmaya çalıştım

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

ve oraya ekledi <referenceBlock name="content" remove="true" />

Ancak içerik bloğu kaldırılmadı. Tanıtıcı dosyasını varsayılan olarak yeniden adlandırdım ve engelleme başarıyla kaldırıldı.

Neyi yanlış yapıyorum?

Yanıtlar:


9

Sorunuza cevap kesinlikle hayır, customer_logged_inartık hiçbir tanıtıcı yok, kodu kazdım ve hile yapabilen herhangi bir düzen tanıtıcısı bulamadım.

Bunun altında \dev\tests\static\testsuite\Magento\Test\Legacy\LayoutTest.phpaşağıdaki kodu bulabilirsiniz:

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

Bana göre, customer_logged_indüzen düzeninin şimdi kullanılmadığını açıkça söylüyor .

Magento 2'de şimdi nasıl yapıldığına dair açıklamalar için Fabian'ın cevabına bakın.


1
bu olaylar müşteri her istekte değil, oturum açtığında ve oturumu kapattığında tetiklenir .
Fabian Schmengler


8

Diğerlerinin de belirttiği gibi, bu kulplar artık yok. Magento_Customer modülüne bakarsanız, kayıt bağlantısı gibi blokların her zaman eklendiğini, ancak müşteri oturum açtıysa oluşturulmadığını görürsünüz . Görünüşe göre bu, giriş durumuna bağlı olarak öğeleri koşullu olarak göstermenin tercih edilen yolu.

Ancak bu, başka bir yerde tanımlanan adlarına göre blokları kaldırmak için bir çözüm değildir. Müşteri oturum açtıysa özelliği layout_load_beforebu aramalar için bir gözlemci ile yeniden oluşturabilirsiniz $layout->addHandle('customer_logged_in').


Yanıtınız için teşekkürler. Tabii ki özel modülümde bu tanıtıcıyı eklemeyi düşündüm. Ama başak gibi görünebilir ve ben daha doğal bir şekilde kullanmak istedim. Açıklama ve örnek için teşekkürler
zhartaunik

0

Bu çok aptalca. Ben sadece loggin veya loggout değil, blok / şablon / Resourse sadece müşteri izni yüklemeniz gerekiyor. Ancak kullanıcı bunu görmek için izin olup olmadığını kontrol etmek için kod 1000 satır yazmak gerekiyor. Sadece güzel.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.