Přeskočit na hlavní obsah

XML Feed — Ceníky (per zákazník)

Ceníkový feed umožňuje zobrazit každému přihlášenému zákazníkovi jeho vlastní cenu — přesně tu, kterou vidí na e-shopu. Nepřihlášený návštěvník vidí běžnou (výchozí) cenu.

Typicky se používá u B2B e-shopů s individuálním cenotvorbou: klubové ceny, smluvní ceny, množstevní tarify nebo cenové skupiny zákazníků.

Kdy použít ceníkový feed

Když má e-shop více cen pro jeden produkt podle toho, kdo je přihlášený (např. „Klubová cena", velkoobchodní ceny, ceny per zákaznická skupina). Bez ceníků se ve vyhledávání vždy zobrazí jen jedna, výchozí cena.

Jak to funguje

E-shop (přihlášený zákazník s kódem ceníku "47DEQ")
│ 1) publikuje ceníkový feed: každý produkt × každý ceník = jedna cena
│ 2) předá widgetu kód ceníku zákazníka → priceLists: "47DEQ"

UpSearch import → ke každému produktu se uloží všechny ceníky (podle kódu)

Vyhledávání → widget pošle kód "47DEQ" → UpSearch vybere cenu daného ceníku

Zákazník vidí ve výsledcích SVOU cenu (47DEQ)
  1. Feed doručí ke každému produktu ceny pro všechny ceníkové kódy.
  2. Widget pošle kód(y) ceníku přihlášeného zákazníka (parametr priceLists).
  3. UpSearch ve výsledcích nahradí cenu produktu cenou z odpovídajícího ceníku.
  4. Bez kódu (nepřihlášený) → výchozí cena z hlavního produktového feedu.

Struktura

Ceníkový feed je doplňkový feed (feed_type = 2) navázaný na stejnou kolekci jako hlavní produktový feed. Kořenový element <products>, každý <item> obsahuje id, code a jeden nebo více bloků <price_list> — po jednom pro každý ceník:

<?xml version="1.0" encoding="utf-8"?>
<products>
<title>Název e-shopu</title>
<link>https://www.example.com/</link>
<item>
<id>126007</id>
<code>105428</code>

<price_list>
<code>47DEQ</code>
<price>218.25</price>
<price_view>
<value>218.25</value>
<view><![CDATA[<strong>218,25 Kč</strong>]]></view>
</price_view>
</price_list>

<price_list>
<code>JdGud</code>
<price>209.25</price>
<price_view>
<value>209.25</value>
<view><![CDATA[<strong>209,25 Kč</strong>]]></view>
</price_view>
</price_list>
</item>
</products>

Parametry položky

ParametrTypPovinnýPopis
idinteger✅ AnoID produktu (musí odpovídat ID v hlavním feedu)
codestring❌ NeKód produktu
price_listobject (0..N)✅ AnoJeden blok pro každý ceník produktu
price_list/codestring✅ AnoKód ceníku (identifikátor cenové skupiny / zákazníka)
price_list/pricenumber✅ AnoČíselná cena pro tento ceník
price_list/price_viewobject✅ AnoFormátované zobrazení ceny
price_list/price_view/valuenumber✅ AnoČíselná hodnota ceny
price_list/price_view/viewstring✅ AnoFormátovaný text/HTML ceny (v CDATA nebo escapované)
Kód ceníku

price_list/code je libovolný řetězec, který si volí e-shop (např. 47DEQ, KLUB, VO-A). Stejný kód, který uvedete zde ve feedu, pak předáte widgetu v priceLists u přihlášeného zákazníka. UpSearch kódy pouze porovnává — vazba „kód → zákazník" je na straně e-shopu (podle přihlášení/session).

Vlastní HTML ceny (view)

Element price_view/view může obsahovat hotové HTML e-shopu (např. „Klubová cena", přeškrtnutá cena, procenta slevy). UpSearch ho zobrazí tak, jak ho pošlete — nerenderuje ho sám.

Nastavení v administraci

  1. Publikujte ceníkový feed na veřejné URL (např. https://www.example.com/data/xml/upsearch-pricelists.xml) — stejná ID produktů jako v hlavním feedu.
  2. V UpSearch administraciNastaveníFeedy přidejte nový feed:
    • Typ: Doplňkový (feed_type = 2)
    • Kolekce: stejná jako hlavní produktový feed
    • Mapování: element price_list → pole custom_data
  3. Feed se importuje jako aktualizace (patch) k existujícím produktům — importuje se každých 10 minut.

Zobrazení ceny zákazníkovi (widget)

Ve widgetu nastavte parametr priceLists na kód(y) ceníku přihlášeného zákazníka (více kódů oddělte čárkou). E-shop tuto hodnotu vyplní server-side podle přihlášení:

<script>
window.upSearchConfig = {
apiToken: 'VAS_TOKEN',
priceLists: '47DEQ' // kód(y) ceníku přihlášeného zákazníka; prázdné = výchozí cena
};
</script>

Widget kód odešle do vyhledávacího API a UpSearch ve výsledcích i našeptávači zobrazí odpovídající cenu. Viz Instalace widgetu → Ceníky a měna.

Výběr ceny

  • Shoda kódu: porovnává se bez ohledu na velikost písmen (47DEQ = 47deq).
  • Více kódů: pokud zákazník patří do více ceníků, vybere se nejnižší cena.
  • Bez shody / bez priceLists: zobrazí se výchozí cena z hlavního feedu.
  • Filtr ceny: cenový rozsah (posuvník) respektuje ceník zákazníka.
  • Ostatní ceníky se ke klientovi nikdy neposílají — zákazník vidí jen svou cenu.
Ceník ≠ akční cena s promo kódem

Ceníky per zákazník (tato stránka) jsou trvalé ceny podle přihlášení. Neplést s akční cenou s promo kódem a odpočtem (price_with_code) — to je časově omezená promo cena zobrazená všem, řešená samostatně.