Je dois enregistrer un cookie pour les utilisateurs anonymes dans Drupal 8 lorsque les utilisateurs visitent le site pour la première fois, qui sera utilisé pour afficher un message.
Je peux en enregistrer une avec succès en utilisant setcookie("FirstTimer", 1, strtotime('+1 year'));
mais je suis sûr que Drupal 8 devrait avoir des alternatives.
Je peux également utiliser le code suivant.
$user_is_first_timer = !isset($_COOKIE["Drupal_visitor_FirstTimer"]);
Lorsque je l'ouvre dans Google Chrome, cela fonctionne, mais lorsque je l'ouvre en mode navigation privée ou dans Firefox, il n'y a aucun message. Les pages en cache sont en quelque sorte diffusées.
Le code est utilisé dans une implémentation de hook_page_attachments()
.
Comme avec Drupal 7, vous utilisez user_cookie_save()
. Dans Drupal 8, il y a juste une méthode dans une classe principale utilisant cette fonction: SystemController::compactPage()
.
Notez que la fonction accepte un tableau de valeurs; chaque valeur recevra son propre cookie. De plus, la fonction ajoute Drupal.visitor. au nom de la valeur pour créer le nom du cookie; ainsi, user_cookie_save(['myCookie' => 10])
créera un cookie Drupal.visitor.myCookie .