it-swarm.com.de

Blockinhalt dynamisch / über AJAX laden?

Ich muss einen benutzerdefinierten Block auf der Seite haben (wird standortweit sein), der zwei Zustände hat - einen, wenn ein Cookie vorhanden ist und einen bestimmten Wert hat, und den anderen, wenn dieser Cookie nicht vorhanden ist oder der Wert veraltet ist. Stellen Sie sich das wie Anmeldestatus vor, aber keine Authentifizierung über Drupal.

Was ist der richtige Weg, um dies mit der block build () -Methode zu tun? Implementiere ich einen Lazy Loader mit der Logik, die das Render-Array erstellt? Füge ich auch einen Cache-Kontext hinzu, der auf diesem Cookie und seinem Wert basiert, damit er für diese Benutzer eindeutig ist?

2
Kevin

Sie können das Cookie aus der Anfrage abrufen, siehe Cookie zur Validierung in EventSubscriber kann nicht gefunden werden . Stellen Sie den Kontext ein und lösen Sie den Kill-Schalter wie im Codebeispiel aus. Es sollte funktionieren. Dies ist jedoch nicht gut für die Leistung. Also würde ich einen leeren Blockcontainer liefern, eine js-Bibliothek an den Block anhängen, die Cookie-Wert-Clientseite abrufen und dann eine Ajax-Anforderung initiieren, um den Blockinhalt abzurufen.

Siehe den Code des Moduls Ajax Block als Beispiel für das verzögerte Laden einer Blockclientseite: https://git.drupalcode.org/project/block_ajax

2
4k4