2016-05-05 3 views
0

J'utilise Sitecore.Analytics.Tracker pour les personnalisations sur mon site. J'ai ajouté la possibilité pour l'utilisateur de changer manuellement leur code postal, ce qui change ce qu'ils voient sur certaines parties du site. Le code postal est récupéré avec Tracker.CurrentVisit.PostalCodeSitecore Analytics Tracker Actualisation des données CurrentVisit (C#, ASP.Net)

public string GetCurrentZipCode() 
{ 
    return Tracker.CurrentVisit.PostalCode.IsNotNullOrEmpty() ? Tracker.CurrentVisit.PostalCode : String.Empty; 
} 

public void SetCurrentZipCode(string zip) 
{ 
    Tracker.CurrentVisit.PostalCode = zip; 

} 

Cela fonctionne, mais est tatillon; de temps en temps quand je rechargerai la page, le code postal sera revenu à la valeur par défaut, ce que j'ai découvert est parce que parfois, lorsque la page charge PostalCode a retrouvé une chaîne vide.

Pourquoi Tracker.CurrentVisit.PostalCode est-il réinitialisé? Est-ce un paramètre dans Sitecore? Comment puis-je l'arrêter? Idéalement, la valeur de PostalCode devrait persister pendant toute la session.

+0

Quelle version de Sitecore utilisez-vous? –

Répondre

0

Le contact a une collection d'adresses qui peut être utilisée pour stocker cette information.

Sitecore.Analytics.Model.config:

<facets> 
    <facet name="Addresses" contract="Sitecore.Analytics.Model.Entities.IContactAddresses, Sitecore.Analytics.Model" /> 
</facets> 

Voir IContactAddresses et iAddress pour plus de détails sur ces interfaces. IContactAddresses a une collection Entries qui est une liste d'objets IAddress.

Accéder info adresse du contact actuel:

private IContactAddresses _addressInfo; 

protected IContactAddresses AddressInfo 
{ 
    get 
    { 
     return _addressInfo ?? (_addressInfo = Tracker.Current.Contact.GetFacet<IContactAddresses>("Addresses")); 
    } 
} 

Vous pouvez obtenir cet objet représentant l'information d'adresse de contact actuelle et mettre à jour les différentes propriétés d'enregistrer ces données en mémoire jusqu'à la fin de la session utilisateur. À ce moment, les données seront réécrites dans xDB afin que vous puissiez les récupérer plus tard.

+0

Mais pourquoi CurrentVisit.PostalCode ne fonctionne-t-il pas? –

+0

Aussi, je ne peux pas utiliser votre méthode parce que Tracker n'a pas 'Current' –

+0

Utilisez-vous Sitecore.Analytics; ? C'est en fait Sitecore.Analytics.Tracker.Current. Si votre outil de suivi n'est pas disponible, assurez-vous que Google Analytics est activé: