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, ви побачите, що блоки, такі як реєстраційне посилання, завжди додаються, але не надаються, якщо клієнт увійшов у систему . Схоже, зараз це кращий спосіб показувати елементи умовно залежно від стану входу.

Але це не рішення для видалення блоків на основі їх імені, які були визначені десь ще. Ви можете відтворити цю функцію за допомогою спостерігача для layout_load_beforeдзвінків, $layout->addHandle('customer_logged_in')якщо клієнт увійшов у систему.


Дякую за Вашу відповідь. Звичайно, я подумав над тим, щоб додати цю ручку до мого спеціального модуля. Але це могло б виглядати як шип, і я хотів використовувати більш рідний спосіб. Дякую за пояснення та приклад
zhartaunik

0

Це дуже дурно. Мені потрібно завантажувати лише блок / шаблон / ресурси, щоб клієнт мав дозвіл, а не лише вхід або вихід. Але мені потрібно написати 1000 рядків коду, щоб перевірити, чи має дозвіл користувач це бачити. Просто прекрасний.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.