Tento článek navazuje na článek Automatizace – nabídka souvisejícího zboží po nákupu a rozšiřuje možnosti automatizace o pokročilé funkce pro práci se souvisejícími produkty. Pomocí bloku Vlastní můžete vytvořit dynamickou logiku, která automaticky vybere produkty z objednávky zákazníka a k nim načte související doplňkové zboží.
Kdy použít blok Vlastní pro související produkty?
Standardní automatizace umožňuje nabízet související zboží na základě kategorií nebo výrobců. Blok Vlastní však poskytuje mnohem pokročilejší možnosti:
- Dynamické načítání doplňků na základě konkrétních produktů v objednávce.
- Flexibilní nastavení počtu nabízených položek.
- Podmíněné ukončení automatizace, pokud nejsou k dispozici vhodné produkty.
Předpoklady
Před implementací bloku Vlastní se ujistěte, že máte splněny tyto podmínky:
- Aktivovaný tarif E-mailing v účtu Boldem.
- Propojený e-shop s účtem Boldem s kompletními daty o produktech.
- Aktivní automatizace s nastaveným spouštěčem Nastane akce na webu s možností „Uživatel dokončil objednávku““.
- Transakční šablony připravené pro zobrazení souvisejících produktů.
Vložení a konfigurace bloku Vlastní
Umístění bloku v automatizaci
Blok Vlastní vložte do automatizace na místo, kde potřebujete vyhodnotit související produkty z objednávky. Obvykle se umísťuje:
- Za spouštěč Nastane akce na webu s možností „Uživatel dokončil objednávku“.
- Před blok Podmínka nebo přímo před odeslání e-mailu.
- Za blok Počkat, pokud chcete počkat určitou dobu po nákupu.
Postup vložení bloku
- V levé části editoru automatizace vyberte kartu Operátory.
- Přetáhněte blok Vlastní do plátna automatizace.
- Dvakrát na blok klikněte pro otevření editoru kódu.
- Vložte následující kód:
{{
numberOfItems = 3
order = loadOrder stateData.orderId;
orderItems = order.orderItems;
orderItems = array.sort orderItems "priceVat"
orderItems = array.reverse orderItems
productsWithRelatedItems = []
i = 0;
while productsWithRelatedItems.size < numberOfItems && i < orderItems.size
productWithRelatedItems = {};
orderItem = orderItems[i];
orderProduct = loadProduct orderItem.externalId
if orderProduct == null
i++
continue
end
if orderProduct.accessoryIds == null || orderProduct.accessoryIds.size == 0
i++;
continue;
end
productWithRelatedItems.product = orderProduct
productWithRelatedItems.relatedProducts = loadProducts orderProduct.accessoryIds
productWithRelatedItems.relatedProducts = array.compact productWithRelatedItems.relatedProducts
if(productWithRelatedItems.relatedProducts.size == 0)
i++;
continue;
end
productWithRelatedItems.relatedProducts = array.uniq productWithRelatedItems.relatedProducts
productWithRelatedItems.relatedProducts = array.sort productWithRelatedItems.relatedProducts 'priceVat'
productWithRelatedItems.relatedProducts = array.reverse productWithRelatedItems.relatedProducts
productsWithRelatedItems = array.add productsWithRelatedItems productWithRelatedItems
i++;
end
if((productsWithRelatedItems | array.size) == 0)
setFinishedState();
else
saveData('productsWithRelatedItems', productsWithRelatedItems);
setOutputPoint('A');
end
}}- Klikněte na Uložit pro potvrzení změn
Vysvětlení funkcionality kódu
Klíčové parametry
numberOfItems = 3 : Definuje maximální počet hlavních produktů, pro které se budou načítat související položky. Tuto hodnotu můžete upravit podle svých potřeb.
Logika zpracování
Kód postupně zpracovává objednávku zákazníka v následujících krocích:
- Načtení objednávky – získá kompletní data o objednávce zákazníka.
- Třídění položek – seřadí produkty podle ceny od nejdražších po nejlevnější.
- Iterace přes produkty – pro každý produkt v objednávce:
- Načte detailní informace o produktu.
- Zkontroluje, zda má definované doplňkové produkty (accessoryIds).
- Načte související produkty.
- Odfiltruje neexistující nebo neplatné produkty.
- Seřadí související produkty podle ceny.
- Výstup – Uloží výsledek nebo ukončí automatizaci.
Výstupní body
Blok má dva možné výstupy:
Výstupní bod A : Aktivuje se, pokud byly nalezeny související produkty. Data se uloží do proměnné productsWithRelatedItems a automatizace pokračuje.
Ukončení automatizace : Pokud nejsou k dispozici žádné související produkty, automatizace se automaticky ukončí, což zabrání odesílání prázdných e-mailů.
Struktura výstupních dat
Blok vytvoří proměnnou productsWithRelatedItems s následující strukturou:
[
{
"product": {
// Informace o hlavním produktu z objednávky
"name": "Název produktu",
"priceVat": 1500,
"externalId": "12345"
// ... další vlastnosti produktu
},
"relatedProducts": [
{
// První související produkt (seřazeno podle ceny)
"name": "Doplněk 1",
"priceVat": 500
// ... další vlastnosti
},
{
// Další související produkty
"name": "Doplněk 2",
"priceVat": 300
}
]
}
// ... další hlavní produkty s jejich doplňky
]Objekt product je strukturován dle modelu ProductFeedItemModel.
Objekt relatedProducts je polem prvků tohoto modelu.
Propojení s dalšími bloky
Navázání na podmínky
Za blok Vlastní obvykle následuje blok Podmínka, který vyhodnotí, zda pokračovat v automatizaci:
- Výstup A – Pokračuje k odeslání e-mailu se souvisejícími produkty.
- Ukončené stavy se nepropojují, automatizace končí.
Výstup A propojte s blokem Odeslat e-mail, který obsahuje transakční šablonu s podporou zobrazení souvisejících produktů.
Přizpůsobení kódu
Změna počtu produktů
Pro úpravu maximálního počtu zpracovávaných produktů změňte hodnotu:
numberOfItems = 5 // Namísto původních 3Dodatečné filtry
Pro přidání vlastních podmínek filtrování souvisejících produktů můžete rozšířit logiku:
// Příklad: zpracovat pouze produkty s cenou vyšší než 1000 Kč
if orderProduct.price < 1000
i++;
continue;
endBlok Vlastní poskytuje mocný nástroj pro vytváření pokročilých automatizací. S jeho pomocí můžete vytvořit vysoce personalizované nabídky, které odpovídají konkrétním nákupům vašich zákazníků a výrazně zvyšují pravděpodobnost dalších prodejů.
Filip Kružík