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ž 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)
- Feed doručí ke každému produktu ceny pro všechny ceníkové kódy.
- Widget pošle kód(y) ceníku přihlášeného zákazníka (parametr
priceLists). - UpSearch ve výsledcích nahradí cenu produktu cenou z odpovídajícího ceníku.
- 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
| Parametr | Typ | Povinný | Popis |
|---|---|---|---|
id | integer | ✅ Ano | ID produktu (musí odpovídat ID v hlavním feedu) |
code | string | ❌ Ne | Kód produktu |
price_list | object (0..N) | ✅ Ano | Jeden blok pro každý ceník produktu |
price_list/code | string | ✅ Ano | Kód ceníku (identifikátor cenové skupiny / zákazníka) |
price_list/price | number | ✅ Ano | Číselná cena pro tento ceník |
price_list/price_view | object | ✅ Ano | Formátované zobrazení ceny |
price_list/price_view/value | number | ✅ Ano | Číselná hodnota ceny |
price_list/price_view/view | string | ✅ Ano | Formátovaný text/HTML ceny (v CDATA nebo escapované) |
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).
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
- 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. - V UpSearch administraci → Nastavení → Feedy přidejte nový feed:
- Typ: Doplňkový (
feed_type = 2) - Kolekce: stejná jako hlavní produktový feed
- Mapování: element
price_list→ polecustom_data
- Typ: Doplňkový (
- 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í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ě.