web-dev-qa-db-fra.com

Charger un contenu de bloc dynamiquement / via AJAX?

J'ai besoin d'un bloc personnalisé sur la page (qui sera à l'échelle du site) qui a deux états - l'un pour quand un cookie est présent et a une certaine valeur, et l'autre pour quand ce cookie n'est pas là ou que la valeur est obsolète. Pensez-y comme des états de connexion, mais pas d'authentification via Drupal.

Quelle est la bonne façon de procéder avec la méthode block build ()? Dois-je implémenter un chargeur paresseux qui a la logique qui construit le tableau de rendu? Dois-je également ajouter un contexte de cache basé sur ce cookie et sa valeur afin qu'il soit unique pour ces utilisateurs?

2
Kevin

Vous pouvez obtenir le cookie à partir de la demande, voir Impossible de trouver le cookie pour validation dans EventSubscriber . Définissez le contexte et déclenchez le commutateur d'arrêt comme dans l'exemple de code et cela devrait fonctionner. Mais ce n'est pas bon pour la performance. Je voudrais donc livrer un conteneur de bloc vide, attacher une bibliothèque js au bloc, obtenir le côté client de la valeur du cookie, puis lancer une demande ajax pour obtenir le contenu du bloc.

Voir le code du module Ajax Block comme exemple comment charger paresseusement un bloc côté client: https://git.drupalcode.org/project/block_ajax

2
4k4