Para uma versão configurável pelo lojista com níveis, regras por mercado e uma barra de progresso, use o bloco Rewards, sem código. Isto é para quando sua regra é algo que o bloco não consegue expressar.
O snippet
Como funciona
reconcileGift descreve o estado em que o carrinho deveria estar, e então faz no máximo uma alteração para chegar lá:
- Qualifica e o brinde não está lá →
addItemo adiciona. - Não qualifica e o brinde está lá →
removeItemo remove, pelakeyda linha. - Caso contrário → não faz nada.
cart_loaded (para que um carrinho que já qualifica no carregamento da página receba o brinde) quanto em cart_updated (para reagir a cada mudança depois disso). Como cart_loaded é reproduzido para assinantes tardios, isso funciona não importa quando seu script executa.
Note que adicionar o brinde aumenta o total do carrinho, então um limite próximo ao preço de um produto pode oscilar: adicionar um brinde de $0 é seguro, mas um brinde com preço poderia empurrar o carrinho acima do limite sozinho. Mantenha o brinde grátis, ou compare com um total que o exclua.
Adaptando
context, que está disponível antes de o carrinho carregar:
Um line transform não pode ocultar os controles de quantidade de uma linha — seus únicos setters são
setTitle, setVariantTitle, setHidden e setInternalProperties. Se um comprador mudar a quantidade do brinde, corrija a partir de um handler de cart_updated.Para onde ir a seguir
- Bloco Rewards: a versão sem código, com níveis.
- Actions:
addItem,removeIteme o resto. - Events: por que as guardas importam.