Przejdź do treści

Wyświetlanie produktów za pomocą treści dynamicznych w edytorze kodu

Edytor kodu pozwala wyswietlać aktualne dane produktów w bannerach, pop-upach i e-mailach ci za pomocą składni Razor. W zależności od tego, co chcesz pokazać – rekomendacje, zawartość koszyka, ostatnio przeglądane produkty, obniżki cen lub szczegóły zamówienia – każda metoda zwraca odpowiednią listę produktów i walutę sklepu.

Podgląd na żywo w edytorze

Dane produktów nie pojawiają się w podglądzie edytora w czasie rzeczywistym. Aby zobaczyć ane, skorzystaj z opcji Podgląd na żywo lub przetestuj treść bezpośrednio na swojej stronie.

Przegląd metod

MetodaOpisZwraca
GetRecommendationsProdukty rekomendowane aktualnemu klientowi na podstawie jego zachowania.Produkty + waluta
GetCartProdukty dodane przez klienta do koszyka.Produkty + waluta
GetAbandonedBrowseProductsProdukty przeglądane, ale nie kupione przez klienta.Produkty + waluta
GetPriceDropProductsProdukty, których cena spadła od ostatniej wizyty klienta.Produkty + waluta
GetOrdersProdukty i szczegóły konkretnego zamówienia klienta.Produkty + szczegóły zamówienia + waluta

Get recommendations

Zwraca listę produktów rekomendowanych aktualnemu klientowi wraz z walutą sklepu.

Sygnatura metody

var recommendations = Model.GetRecommendations(int count = 4);

Parametry

ParametrTypDomyślnieOpis
countint4Liczba produktów do pobrania.

Zwracana wartość

{
  "Products": [
    {
      "Id": "SKU-123",
      "Name": "Nike Air Zoom",
      "Url": "https://sklep.pl/p/nike-air-zoom",
      "ImageUrl": "https://sklep.pl/media/nike-air-zoom.jpg",
      "Category": "Buty",
      "PriceString": "349.99",
      "CurrentPriceString": "299.99",
      "OmnibusPriceString": "329.99",
      "AdditionalInfo": "",
      "CustomProductAttributes": [
        {
          "Id": 101,
          "Name": "Marka",
          "Value": "Nike",
          "ValueString": "Nike"
        }
      ]
    }
  ],
  "Currency": {
    "ISO": "PLN",
    "Sign": ""
  }
}
PoleTypOpis
IdstringUnikalny identyfikator produktu.
NamestringNazwa produktu.
UrlstringAdres URL strony produktu.
ImageUrlstringAdres URL zdjęcia produktu.
CategorystringKategoria produktu.
PriceStringstringCena regularna w formacie tekstowym.
CurrentPriceStringstringCena promocyjna w formacie tekstowym. Puste pole oznacza brak aktywnej promocji.
OmnibusPriceStringstringNajniższa cena z ostatnich 30 dni (zgodnie z dyrektywą Omnibus).
AdditionalInfostringOpcjonalne informacje dodatkowe.
CustomProductAttributeslistCechy niestandardowe zdefiniowane dla produktu (np. marka, kolor).

Przykłady użycia

Wyświetlanie pierwszego rekomendowanego produktu

@{
    var recommendations = Model.GetRecommendations(4);
    var product = recommendations.Products?.FirstOrDefault();
}

@if (product != null)
{
    <a href="@product.Url">
        <img src="@product.ImageUrl" alt="@product.Name" />
    </a>
    <div>@product.Name</div>
    <div>
        @(string.IsNullOrWhiteSpace(product.CurrentPriceString)
            ? product.PriceString
            : product.CurrentPriceString)
        @recommendations.Currency.Sign
    </div>
}

Pętla po wszystkich rekomendowanych produktach

@{
    var recommendations = Model.GetRecommendations(4);
}

@foreach (var product in recommendations.Products)
{
    if (product != null)
    {
        <a href="@product.Url">
            <img src="@product.ImageUrl" alt="@product.Name" />
        </a>
        <div>@product.Name</div>
        <div>
            @(string.IsNullOrWhiteSpace(product.CurrentPriceString)
                ? product.PriceString
                : product.CurrentPriceString)
            @recommendations.Currency.Sign
        </div>
    }
}

Odczyt niestandardowej cechy produktu

@{
    var brand = product?.CustomProductAttributes
        ?.FirstOrDefault(x => x.Name == "Marka")?.ValueString;
}

Uwagi

  • Używaj operatorów warunkowych null (?.) podczas dostępu do właściwości produktu.
  • GetRecommendations domyślnie pobiera 4 produkty. Dostosuj parametr count do układu swojego banera.
  • Użyj CurrentPriceString, aby wyświetlić cenę promocyjną. Jeśli pole jest puste, wyświetl PriceString.
  • OmnibusPriceString zawiera najniższą cenę z ostatnich 30 dni. Wyświetlaj ją obok ceny promocyjnej, aby spełnić wymogi dyrektywy Omnibus.

Get cart

Zwraca produkty aktualnie znajdujące się w koszyku klienta wraz z walutą sklepu.

Sygnatura metody

var cart = Model.GetCart(int count = 100);

Parametry

ParametrTypDomyślnieOpis
countint100Maksymalna liczba produktów z koszyka do pobrania.

Zwracana wartość

{
  "Products": [
    {
      "Id": "SKU-123",
      "Name": "Nike Air Zoom",
      "Url": "https://sklep.pl/p/nike-air-zoom",
      "ImageUrl": "https://sklep.pl/media/nike-air-zoom.jpg",
      "Category": "Buty",
      "PriceString": "349.99",
      "CurrentPriceString": "299.99",
      "OmnibusPriceString": "329.99",
      "AdditionalInfo": "",
      "Quantity": 2,
      "CustomProductAttributes": [
        {
          "Id": 101,
          "Name": "Marka",
          "Value": "Nike",
          "ValueString": "Nike"
        }
      ]
    }
  ],
  "Currency": {
    "ISO": "PLN",
    "Sign": ""
  }
}
PoleTypOpis
IdstringUnikalny identyfikator produktu.
NamestringNazwa produktu.
UrlstringAdres URL strony produktu.
ImageUrlstringAdres URL zdjęcia produktu.
CategorystringKategoria produktu.
PriceStringstringCena regularna w formacie tekstowym.
CurrentPriceStringstringCena promocyjna w formacie tekstowym. Puste pole oznacza brak aktywnej promocji.
OmnibusPriceStringstringNajniższa cena z ostatnich 30 dni (zgodnie z dyrektywą Omnibus).
QuantityintLiczba sztuk produktu w koszyku.
AdditionalInfostringOpcjonalne informacje dodatkowe.
CustomProductAttributeslistCechy niestandardowe zdefiniowane dla produktu (np. marka, kolor).

Przykłady użycia#

Wyświetlanie pierwszego produktu z koszyka

@{
    var cart = Model.GetCart(4);
    var product = cart.Products?.FirstOrDefault();
}

@if (product != null)
{
    <a href="@product.Url">
        <img src="@product.ImageUrl" alt="@product.Name" />
    </a>
    <div>@product.Name</div>
    <div>Ilość: @product.Quantity</div>
    <div>
        @(string.IsNullOrWhiteSpace(product.CurrentPriceString)
            ? product.PriceString
            : product.CurrentPriceString)
        @cart.Currency.Sign
    </div>
}

Pętla po wszystkich produktach w koszyku

@{
    var cart = Model.GetCart(4);
}

@foreach (var product in cart.Products)
{
    if (product != null)
    {
        <a href="@product.Url">
            <img src="@product.ImageUrl" alt="@product.Name" />
        </a>
        <div>@product.Name</div>
        <div>Ilość: @product.Quantity</div>
        <div>
            @(string.IsNullOrWhiteSpace(product.CurrentPriceString)
                ? product.PriceString
                : product.CurrentPriceString)
            @cart.Currency.Sign
        </div>
    }
}

Uwagi#

  • Jeśli koszyk klienta nie zostanie znaleziony, metoda może zwrócić błąd zamiast pustej listy. Zadbaj o obsługę tego przypadku w szablonie.
  • Pole Quantity jest unikalne dla tej metody i niedostępne w pozostałych metodach produktowych.

Get abandoned browse products

Zwraca produkty, które klient przeglądał, ale których nie kupił.

Sygnatura metody

var abandonedBrowse = Model.GetAbandonedBrowseProducts(int count = 100);

Parametry

ParametrTypDomyślnieOpis
countint100Maksymalna liczba produktów do pobrania.

Zwracana wartość

{
  "Products": [
    {
      "Id": "SKU-123",
      "Name": "Nike Air Zoom",
      "Url": "https://sklep.pl/p/nike-air-zoom",
      "ImageUrl": "https://sklep.pl/media/nike-air-zoom.jpg",
      "Category": "Buty",
      "PriceString": "349.99",
      "CurrentPriceString": "299.99",
      "OmnibusPriceString": "329.99",
      "AdditionalInfo": "",
      "CustomProductAttributes": [
        {
          "Id": 101,
          "Name": "Marka",
          "Value": "Nike",
          "ValueString": "Nike"
        }
      ]
    }
  ],
  "Currency": {
    "ISO": "PLN",
    "Sign": ""
  }
}
PoleTypOpis
IdstringUnikalny identyfikator produktu.
NamestringNazwa produktu.
UrlstringAdres URL strony produktu.
ImageUrlstringAdres URL zdjęcia produktu.
CategorystringKategoria produktu.
PriceStringstringCena regularna w formacie tekstowym.
CurrentPriceStringstringCena promocyjna w formacie tekstowym. Puste pole oznacza brak aktywnej promocji.
OmnibusPriceStringstringNajniższa cena z ostatnich 30 dni (zgodnie z dyrektywą Omnibus).
AdditionalInfostringOpcjonalne informacje dodatkowe.
CustomProductAttributeslistCechy niestandardowe zdefiniowane dla produktu (np. marka, kolor).

Przykłady użycia

Wyświetlanie pierwszego przeglądanego produktu

@{
    var abandonedBrowse = Model.GetAbandonedBrowseProducts(4);
    var product = abandonedBrowse.Products?.FirstOrDefault();
}

@if (product != null)
{
    <a href="@product.Url">
        <img src="@product.ImageUrl" alt="@product.Name" />
    </a>
    <div>@product.Name</div>
    <div>
        @(string.IsNullOrWhiteSpace(product.CurrentPriceString)
            ? product.PriceString
            : product.CurrentPriceString)
        @abandonedBrowse.Currency.Sign
    </div>
}

Pętla po wszystkich przeglądanych produktach

@{
    var abandonedBrowse = Model.GetAbandonedBrowseProducts(4);
}

@foreach (var product in abandonedBrowse.Products)
{
    if (product != null)
    {
        <a href="@product.Url">
            <img src="@product.ImageUrl" alt="@product.Name" />
        </a>
        <div>@product.Name</div>
        <div>
            @(string.IsNullOrWhiteSpace(product.CurrentPriceString)
                ? product.PriceString
                : product.CurrentPriceString)
            @abandonedBrowse.Currency.Sign
        </div>
    }
}

Odczyt niestandardowej cechy produktu

@{
    var color = product?.CustomProductAttributes
        ?.FirstOrDefault(x => x.Name == "Kolor")?.ValueString;
}

Uwagi

  • Jeśli liczba znalezionych produktów jest mniejsza niż count, lista Products może zawierać wpisy null. Zawsze sprawdzaj null przed odwołaniem się do właściwości produktu.

Get price drop products

Zwraca produkty, których cena spadła od ostatniej wizyty klienta.

Sygnatura metody

var priceDropProducts = Model.GetPriceDropProducts(int count = 100);

Parametry

ParametrTypDomyślnieOpis
countint100Maksymalna liczba produktów do pobrania.

Zwracana wartość

{
  "Products": [
    {
      "Id": "SKU-123",
      "Name": "Nike Air Zoom",
      "Url": "https://sklep.pl/p/nike-air-zoom",
      "ImageUrl": "https://sklep.pl/media/nike-air-zoom.jpg",
      "Category": "Buty",
      "PriceString": "299.99",
      "CurrentPriceString": "",
      "OmnibusPriceString": "",
      "PriceLastSeenByCustomer": 349.99,
      "PriceLastSeenByCustomerString": "349.99",
      "AdditionalInfo": "",
      "CustomProductAttributes": [
        {
          "Id": 101,
          "Name": "Marka",
          "Value": "Nike",
          "ValueString": "Nike"
        }
      ]
    }
  ],
  "Currency": {
    "ISO": "PLN",
    "Sign": ""
  }
}
PoleTypOpis
IdstringUnikalny identyfikator produktu.
NamestringNazwa produktu.
UrlstringAdres URL strony produktu.
ImageUrlstringAdres URL zdjęcia produktu.
CategorystringKategoria produktu.
PriceStringstringAktualna cena produktu w formacie tekstowym.
CurrentPriceStringstringCena promocyjna w formacie tekstowym. Puste pole oznacza brak aktywnej promocji.
OmnibusPriceStringstringNajniższa cena z ostatnich 30 dni (zgodnie z dyrektywą Omnibus).
PriceLastSeenByCustomerdecimalCena, którą klient widział podczas ostatniej wizyty.
PriceLastSeenByCustomerStringstringPriceLastSeenByCustomer w formacie tekstowym.
AdditionalInfostringOpcjonalne informacje dodatkowe.
CustomProductAttributeslistCechy niestandardowe zdefiniowane dla produktu (np. marka, kolor).

Przykłady użycia

Wyświetlanie pierwszego produktu z obniżoną ceną

@{
    var priceDropProducts = Model.GetPriceDropProducts(4);
    var product = priceDropProducts.Products?.FirstOrDefault();
}

@if (product != null)
{
    <a href="@product.Url">
        <img src="@product.ImageUrl" alt="@product.Name" />
    </a>
    <div>@product.Name</div>
    <div>Teraz: @product.PriceString @priceDropProducts.Currency.Sign</div>
    <div>Poprzednio: @product.PriceLastSeenByCustomerString @priceDropProducts.Currency.Sign</div>
}

Pętla po wszystkich produktach z obniżoną ceną

@{
    var priceDropProducts = Model.GetPriceDropProducts(4);
}

@foreach (var product in priceDropProducts.Products)
{
    if (product != null)
    {
        <a href="@product.Url">
            <img src="@product.ImageUrl" alt="@product.Name" />
        </a>
        <div>@product.Name</div>
        <div>Teraz: @product.PriceString @priceDropProducts.Currency.Sign</div>
        <div>Poprzednio: @product.PriceLastSeenByCustomerString @priceDropProducts.Currency.Sign</div>
    }
}

Uwagi

  • Jeśli liczba znalezionych produktów jest mniejsza niż count, lista Products może zawierać wpisy null. Zawsze sprawdzaj null przed odwołaniem się do właściwości produktu.
  • PriceLastSeenByCustomerString przechowuje cenę, którą klient widział podczas poprzedniej wizyty. Wyświetlaj ją obok PriceString, aby wyraźnie pokazać obniżkę.

Get orders

Zwraca produkty i szczegóły konkretnego zamówienia złożonego przez klienta wraz z walutą oryginalną i przeliczoną. Metoda jest dostępna w newsletterach e-mail, treściach e-mail w scenariuszach, pop-upach i banerach.

Sygnatura metody

var orders = Model.GetOrders(string orderID, int websiteId, string[] status);

Parametry

Jeśli nie podasz żadnych parametrów, metoda zwróci wszystkie zamówienia bieżącego klienta.

ParametrTypWymaganyOpis
orderIdstringnieID zamówienia do pobrania. Jeśli pominięty, zwracane są wszystkie zamówienia klienta.
websiteIdintnieID witryny, z którą powiązane jest zamówienie. Jeśli pominięty, a kilka zamówień ma to samo ID, zwracane jest najnowsze (według daty zamówienia).
statuslistnieLista statusów zamówień do filtrowania: paid, placed, completed, canceled.
sortnie
dateRangestring(date)nie

Zwracana wartość

[
  {
    "Products": [
      {
        "Id": "produkt123",
        "Name": "Nazwa produktu",
        "Url": "https://sklep.pl/produkt/produkt123",
        "ImageUrl": "https://sklep.pl/zdjecia/produkt123.jpg",
        "Category": "Elektronika",
        "Price": 79.99,
        "PriceString": "79.99",
        "ConvertedPrice": 72.53,
        "Quantity": 2,
        "Returned": false,
        "OrderProductId": 123,
        "CustomProductAttributes": [
          { "Id": 1, "Name": "nazwa1", "Value": "niebieski", "ValueString": "niebieski" },
          { "Id": 2, "Name": "nazwa2", "Value": 15.99, "ValueString": "15.99" }
        ]
      }
    ],
    "OrderDate": "2025-04-14T23:06:00",
    "Status": "Paid",
    "TotalValue": 159.98,
    "ConvertedTotalValue": 134.67,
    "OriginalCurrency": { "ISO": "PLN", "Sign": "" },
    "ConvertedCurrency": { "ISO": "EUR", "Sign": "" },
    "CustomOrderAttributes": [
      { "Id": 1, "Name": "nazwa atrybutu zamówienia", "Value": 123, "ValueString": "123" }
    ]
  }
]
PoleTypOpis
IdstringUnikalny identyfikator produktu.
NamestringNazwa produktu.
UrlstringAdres URL strony produktu.
ImageUrlstringAdres URL zdjęcia produktu.
CategorystringKategoria produktu.
PricedecimalCena regularna jako wartość dziesiętna.
PriceStringstringCena regularna w formacie tekstowym.
ConvertedPricedecimalCena przeliczona na walutę raportowania sklepu.
QuantityintLiczba sztuk produktu w zamówieniu.
ReturnedboolInformuje, czy produkt został zwrócony.
OrderProductIdintUnikalny identyfikator pozycji produktu w zamówieniu.
CustomProductAttributeslistCechy niestandardowe zdefiniowane dla produktu (np. marka, kolor).
OrderDatedatetimeData i godzina złożenia zamówienia.
StatusstringAktualny status zamówienia (np. „Paid”, „Completed”).
TotalValuedecimalŁączna wartość zamówienia w walucie oryginalnej.
ConvertedTotalValuedecimalŁączna wartość zamówienia przeliczona na walutę raportowania.
OriginalCurrencyobjectWaluta użyta przy składaniu zamówienia (ISO i symbol).
ConvertedCurrencyobjectWaluta używana dla wartości przeliczonych (ISO i symbol).
CustomOrderAttributeslistCechy niestandardowe zdefiniowane dla zamówienia.

Przykłady użycia

Wyświetlanie produktów z konkretnego zamówienia

@{
    var orders = Model.GetOrders("12343XYZ", websiteId: 2, status: new[] { "Paid", "Completed" });
    var firstOrder = orders?.FirstOrDefault();
    var product = firstOrder?.Products?.FirstOrDefault();
}

@if (product != null)
{
    <a href="@product.Url">
        <img src="@product.ImageUrl" alt="@product.Name" />
    </a>
    <div>@product.Name</div>
    <div>Ilość: @product.Quantity</div>
    <div>@product.PriceString @firstOrder.OriginalCurrency.Sign</div>
}

Pętla po wszystkich produktach w zamówieniu

@{
    var orders = Model.GetOrders("12343XYZ", websiteId: 2, status: new[] { "Paid", "Completed" });
    var firstOrder = orders?.FirstOrDefault();
}

@if (firstOrder != null)
{
    foreach (var product in firstOrder.Products)
    {
        if (product != null)
        {
            <a href="@product.Url">
                <img src="@product.ImageUrl" alt="@product.Name" />
            </a>
            <div>@product.Name</div>
            <div>Ilość: @product.Quantity</div>
            <div>@product.PriceString @firstOrder.OriginalCurrency.Sign</div>
        }
    }
}

Odczyt niestandardowej cechy zamówienia

@{
    var customAttr = firstOrder?.CustomOrderAttributes
        ?.FirstOrDefault(x => x.Name == "nazwa atrybutu zamówienia")?.ValueString;
}

Odczyt niestandardowej cechy produktu

@{
    var brand = product?.CustomProductAttributes
        ?.FirstOrDefault(x => x.Name == "Marka")?.ValueString;
}

Uwagi

  • Używaj operatorów warunkowych null (?.) podczas dostępu do właściwości zamówień i produktów, aby uniknąć błędów.
  • GetOrders może zwrócić wiele zamówień. Użyj FirstOrDefault(), aby pracować z pojedynczym zamówieniem, lub przejdź pętlą przez całą listę.
  • Użyj PriceString z OriginalCurrency.Sign, aby wyświetlić ceny w walucie oryginalnej zamówienia. Użyj ConvertedPrice z ConvertedCurrency.Sign, jeśli chcesz wyświetlić ceny w przeliczonej walucie.
  • Jeśli żadne zamówienie nie spełnia podanych parametrów, metoda może zwrócić pustą listę. Zadbaj o obsługę tego przypadku w szablonie.
  • Gdy używasz GetOrders() w scenariuszu po zakupie, punkt startowy Order przekazuje orderId jako pole danych. Możesz go użyć bezpośrednio w metodzie, aby pobrać właściwe zamówienie.