Magento 2: Wie verwende ich das Layout-Handle customer_logged_in?

9

Hat Magento 2 ein Handle wie customer_logged_in ? Wenn ja, wie kann ich es verwenden?

Ich habe versucht zu schaffen

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

und dort hinzugefügt <referenceBlock name="content" remove="true" />

Der Inhaltsblock wurde jedoch nicht entfernt. Ich habe die Handle-Datei in Standard umbenannt und der Block wurde erfolgreich entfernt.

Was mache ich falsch?

zhartaunik
quelle

Antworten:

9

Die Antwort auf Ihre Frage lautet definitiv nein, es gibt kein customer_logged_inHandle mehr, ich habe mich in den Code vertieft und konnte kein Layout-Handle finden, das den Trick machen könnte.

Darüber hinaus \dev\tests\static\testsuite\Magento\Test\Legacy\LayoutTest.phpfinden Sie unter folgenden Code:

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

Was mir klar sagt, dass das customer_logged_inLayout-Handle jetzt veraltet ist.

In Fabians Antwort finden Sie Erklärungen dazu, wie es jetzt in Magento 2 gemacht wird.

Raphael beim digitalen Pianismus
quelle
1
Diese Ereignisse werden ausgelöst, wenn sich der Kunde anmeldet und wenn er sich abmeldet , nicht bei jeder Anfrage.
Fabian Schmengler
8

Wie andere betont haben, sind diese Griffe jetzt weg. Wenn Sie sich das Magento_Customer-Modul ansehen, werden Sie feststellen, dass Blöcke wie der Registrierungslink immer hinzugefügt, aber nicht gerendert werden, wenn der Kunde angemeldet ist . Es sieht so aus, als ob dies jetzt die bevorzugte Methode ist, um Elemente abhängig vom Anmeldestatus bedingt anzuzeigen.

Dies ist jedoch keine Lösung zum Entfernen von Blöcken basierend auf ihrem Namen, die an anderer Stelle definiert wurden. Sie können die Funktion mit einem Beobachter für layout_load_beforediese Anrufe neu erstellen , $layout->addHandle('customer_logged_in')wenn der Kunde angemeldet ist.

Fabian Schmengler
quelle
Vielen Dank für Ihre Antwort. Sicher habe ich darüber nachgedacht, das Handle in meinem benutzerdefinierten Modul hinzuzufügen. Aber es könnte wie eine Spitze aussehen und ich wollte einen nativeren Weg verwenden. Vielen Dank für die Erklärung und das Beispiel
zhartaunik
0

Das ist sehr dumm. Ich muss Block / Vorlage / Ressource laden. Nur Kunden haben die Berechtigung, nicht nur Loggin oder Loggout. Aber ich muss 1000 Codezeilen schreiben, um zu überprüfen, ob der Benutzer die Berechtigung hat, dies zu sehen. Einfach nur schön.

user2386643
quelle