Magento 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 में अब कैसे किया जाता है, इस बारे में स्पष्टीकरण के लिए फैबियन का जवाब देखें।


1
उन घटनाओं को ट्रिगर किया जाता है जब ग्राहक लॉग इन करता है और जब वह लॉग आउट करता है , तो हर अनुरोध पर नहीं।
फाबियन शेंगलर

8

अगर कोई अभी भी इससे जूझ रहा है तो मैंने एक त्वरित मॉड्यूल लिखा है जो आपके लिए Magento की तरह उपयोग करने के लिए customer_logged_in और customer_logged_out लेआउट हैंडल जोड़ता है 1

http://frankclark.xyz/modules/magento-2-get-customer_logged_in-and-customer_logged_out-layout-handles

का आनंद लें !


8

जैसा कि अन्य ने बताया है, ये हैंडल अब चले गए हैं। यदि आप Magento_Customer मॉड्यूल को देखते हैं, तो आप देखेंगे कि पंजीकरण लिंक हमेशा की तरह जोड़े जाते हैं, लेकिन यदि ग्राहक लॉग इन नहीं है, तो उसे रेंडर नहीं किया जाता है । ऐसा लगता है कि यह लॉगिन अवस्था के आधार पर सशर्त रूप से तत्वों को दिखाने का पसंदीदा तरीका है।

लेकिन यह उनके नाम के आधार पर ब्लॉकों को हटाने का समाधान नहीं है, जो कहीं और परिभाषित किए गए थे। यदि ग्राहक लॉग इन है तो आप layout_load_beforeउस कॉल के लिए एक पर्यवेक्षक के साथ सुविधा को फिर से बना सकते हैं $layout->addHandle('customer_logged_in')


आपके प्रतिक्रिया के लिए धन्येवाद। ज़रूर मैंने अपने कस्टम मॉड्यूल में हैंडल को जोड़ने के बारे में सोचा। लेकिन यह स्पाइक की तरह लग सकता था और मैं अधिक देशी तरीके का उपयोग करना चाहता था। स्पष्टीकरण और उदाहरण के लिए धन्यवाद
zhartaunik

0

यह बहुत बेवकूफी है। मुझे ब्लॉक / टेम्प्लेट / रिसोर्स को लोड करने की आवश्यकता है केवल ग्राहक के पास अनुमति है, न कि केवल लॉगगिन या लॉगगआउट। लेकिन मुझे यह देखने के लिए उपयोगकर्ता की अनुमति है कि नहीं, यह जांचने के लिए कोड की 1000 लाइनें लिखने की आवश्यकता है। सिर्फ सुंदर।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.