W widokach tworzonych w YouLead (na potrzeby personalizacji lub innych działań) dostępne są specjalne zmienne oraz kolekcje zawierające dane, które mogą okazać się niezbędne do implementacji. Dane te dotyczą różnych przestrzeni np.:
- kontaktu, dla którego wykonywany jest widok
- strony internetowej, na której widok (personalizacja) jest osadzony
- konfiguracji danej instancji YouLead (np. listy użytkowników systemu)
Poszczególne zmienne i kolekcje opisane są dalej.
Model.ProductOverviews
Zawiera dane o oglądanych przez kontakt produktach w całej jego historii wizyt na stronie internetowej. Każdy produkt opisywany jest informacjami:
- Name – Nazwa produktu
- Alias – Alias (Identyfikator) produktu
- FeedId – Identyfikator feedu produktowego
- Url – Adres strony intern produktu
- PhotoUrl – Adres zdjęcia produktu
- Category – Kategoria produktu
- Active – Informacja o dostępności produktu
- D1 do D30 – cechy dodatkowe produktu
- Date – Data oglądania produktu przez kontakt
Wszystkie informacje (poza „Date”) pochodzą z feedu produktowego.
Przykład użycia:
var lastVisited = Model.ProductOverviews.Where(s => s.Active == true ).OrderByDescending(t => t.Date).GroupBy(a => a.Name).Select(g => g.First()).Take(4).ToList();
Model.ClientOverview
Obiekt zawiera podstawowe informacje o kontakcie:
- FirstName – Imię
- LastName – Nazwisko
- Email – Email
- Phone – Telefon
- Anonymous – Informacja o tym, czy kontakt jest anonimowy (niezidentyfikowany)
Przykład użycia:
Model.ClientOverview.FirstName - wyświetla imię kontaktu
Warunek do sprawdzenia czy kontakt jest anonimowy:
if(Model.ClientOverview != null && (bool)Model.ClientOverview.Anonymous)
{
//Jest anonimowy
}
else
{
//Nie jest anonimowy
}
Model.ClientsTags
Kolekcja zawiera dane o tagach i ich przypisaniu do kontaktu. Każdy z tagów opisany jest informacjami:
- HasTag – Flaga wskazująca czy kontakt posiada tag (wartość 1 lub 0)
- Name – Nazwa tagu
- Score – Punktacja tagu
- TagsGroupName – Grupa tagów, do której należy tag
Przykład użycia:
var tag1 = Model.ClientsTags.Where(t => t.TagsGroupName == "nazwa grupy tagów" && t.Name == "nazwa tagu" && t.HasTag == 1).ToList();
Model.ClientsProfiles
Kolekcja zawiera dane o przypisaniu kontaktu do lejka, jego statusu w lejku oraz punktacji. Każdy lejek opisany jest informacjami:
- ProductName – Nazwa lejka
- Score – Punktacja lejka
- StatusId – Status lejka
- OwnerId – Id opiekuna w lejku
Przykład użycia:
var funnel = Model.ClientsProfiles.FirstOrDefault(p => p.ProductName == "Testowy lejek");
Model.ClientsAttributes
Kolekcja zawiera dane o atrybutach kontaktu (zdefiniowane atrybuty dostępne są w panelu YouLead w sekcji: Ustawienia -> Atrybuty) . Każdy atrybut opisany jest informacjami:
- Keys – Alias atrybutu(Ustawienia -> Atrybuty)
- DescriptionShort – Nazwa Atrybutu
- DescriptionLong – Opis atrybutu
- Type – Typ danych atrybutu
- Data – Sprawdzanie zawartości(czy nie pusty)
- SortOrder – Kolejność atrybutu
Przykład użycia (pobranie niepustego atrybutu, którego nazwa to “Województwo”):
var ownerAttrList = Model.ClientsAttributes.Where(t => t.DescriptionShort == "Województwo” && !string.IsNullOrEmpty(t.Data)).Select(t => t.Data).Distinct().ToList();
Model.AllProducts
Kolekcja zawiera informacje o wszystkich produktach z feedu produktowego. Uwaga: kolekcja może być bardzo duża, dlatego należy podawać odpowiednie kryteria wyboru produktów tak, żeby do widoku trafiła lista najwyżej 100 produktów. W przeciwnym razie wykonywanie widoku może spowolnić.
Każdy z produktów opisany jest następującymi informacjami:
- Name – Nazwa produktu
- Alias – Alias produktu
- FeedId – ID Feeda
- Url – Adres produktu
- PhotoUrl – Adres zdjęcia
- Category – Kategoria
- Active – Informacja o dostępności produktu
- D1 do D30 – cechy dodatkowe produktu
Przykład użycia (pobieranie 4 losowych produktów dostępnych z feedu prouktowego):
var randProducts = Model.AllProducts.Where(t => ((bool)t.Active) == true).OrderBy(t => Guid.NewGuid()).Take(4).ToList();
Model.ProductsWithRank
Kolekcja zawiera dane o najczęściej oglądanych produktach przez wszystkie kontakty. Każdy z produktów opisywany jest informacjami:
- Name – Nazwa produktu
- Alias – Alias produktu
- FeedId – ID Feeda
- Url – Adres produktu
- PhotoUrl – Adres zdjęcia
- Category – Kategoria
- Active – Informacja o dostępności produktu
- Cechy:D1-D30
- Views – Ilość wszystkich wyświetleń
- LastViewed – Data ostatniego oglądania danego produktu
Przykład użycia (pobranie 5 najczęściej oglądanych produktów):
var products = Model.ProductsWithRank.OrderByDescending(m => m.Views).Take(5).ToList();
Model.AllUsers
Kolekcja zawiera dane zdefiniowanych użytkowników systemu. Każdy użytkownik opisany jest informacjami:
- Email – Email użytkownika
- DescriptionFirst – Imię
- DescriptionLast – Nazwisko
- DescriptionCodename – Nazwa Użytkownika
- Phone – Numer telefonu
Przykład użycia (pobranie danych użytkownika z imieniem „User” i nazwiskiem „User”):
var usersList = Model.AllUsers.Where(u => u.DescriptionFirst == "User" && u.DescriptionLast == "User").ToList();
Model.ClientCarts
Kolekcja informująca o tym, ile aktywnych koszyków posiada kontakt. Kontakt może posiadać więcej niż jeden koszyk w przypadku, gdy do instancji YouLead jest podpiętych jest kilka stron internetowych, na których funkcjonuje pojęcie koszyka.
Model.SingleCart
Obiekt zawiera dane opisujące koszyk kontaktu. Informacje opisujące koszyk:
- Domain – Nazwa domeny
- DomainId – Id domeny
- ClientId – ID kontaktu
- Date – Data utworzenia koszyka
- CartUrl – Link przekazany podczas zmiany zawartości koszyka przez API
- TransactionId – Id transakcji
- CustomValue – Waluta
- Value – Wartość koszyka
- ProductCount – Liczba produktów
- CartItems – Lista produktów w koszyka
- ProductsInCart – Produkty w koszyku
Przykład użycia:
/* Single Cart */
var cartCheck = Model.SingleCart;
/* Check if there are multiple carts (different languages/domains)*/
if(cartCheck == null && Model.ClientsCarts.Count > 0)
{
/* last Cart */
cartCheck = Model.ClientsCarts.OrderByDescending(d => d.Date).FirstOrDefault();
}
/* Products in the cart */
var cart = basketCheck.ProductsInCart.Where(t=> t.Active == true).GroupBy(a => a.Alias).Select(g => g.First()).Take(3).ToList();
Model.ClientId
Identyfikator kontaktu w systemie YouLead.
Model.Url
Obiekt zawiera dane o adresie strony, w kontekście której wykonywany jest widok.
Przykład użycia:
if(Model.Url.Contains("strona.pl/?parametrTestowy"){}
Model.Parameter
Obiekt zawiera parametr (typu String) przekazany do widoku.
Model.ParameterFromTemplate
Obiekt zawiera parametr przekazany z szablonu mailingu. W szablonie maila umieszczamy następujące wywołanie np.
$$AliasWidoku:Parametr$$
Przykładowo sposób wypisania numeru telefonu opiekuna w mailu
$$daneOpiekuna:numerTelefonuOpiekuna$$ – umieszczany w miejscu gdzie chcemy wyświetlić numer telefonu opiekuna.
Widok o aliasie: daneOpiekuna
if(Model.ParameterFromTemplate == "numerTelefonuOpiekuna")
{
/* Pobieranie opiekuna kontaktu */
var owner = Model.ClientOverview.Owner;
if(owner != null)
{
/* Pobranie danych opiekuna */
var ownerAttrList = Model.AllUsers.Where(s=> s.UserId == owner).ToList();
if(ownerAttrList.Count > 0)
{
/* wypisanie numeru telefonu opiekuna */
@ownerAttrList[0].Phone
}
}
}