Nascondi le righe che l’acquirente non dovrebbe vedere, rinomina le righe che si leggono male e controlla l’ordine in cui tutto viene renderizzato, il tutto senza toccare ciò che è effettivamente nel carrello.
Questo sostituisce il vecchio pattern di nascondere gli elementi del carrello con CSS o style.display = 'none'. Un line transform viene applicato ogni volta che il carrello renderizza, quindi sopravvive ad aggiornamenti, re-render e riaperture del drawer.
Nascondere non è rimuovere. Una riga nascosta rimane nel carrello dell’acquirente, rimane nel totale e arriva fino al checkout; semplicemente non viene disegnata nel drawer. Esce però da getCart().items e da itemCount, quindi anche il tuo stesso codice smette di vederla. Se vuoi che sparisca davvero, usa removeItem.
Cose che vale la pena nascondere comunemente:
I quattro setter disponibili su una riga:
Un comparator ha la stessa forma che Array.prototype.sort si aspetta, e viene eseguito dopo il nascondere e il rinominare:
Restituisci 0 per le coppie che non ti interessano. I comparator si compongono come criteri di spareggio, quindi il primo che restituisce un valore diverso da zero decide quella coppia e restituire 0 passa la decisione al successivo invece di imporre un ordine.
Nascondere un intero blocco, non una riga
Un line transform lavora sulle righe del carrello. Per mostrare impostazioni di blocco diverse per paese, mercato o valuta (per esempio livelli di Rewards diversi), usa le condizioni nel cart editor. Nessun codice richiesto, e sopravvive ai redesign del carrello. Il totale del carrello e il contenuto del carrello non sono tipi di condizione dell’editor.
Ricorri all’SDK quando la tua regola è qualcosa che le condizioni non possono esprimere (ID di prodotti nel carrello, un totale personalizzato e così via). In tal caso, interroga lo shadow root per una classe pubblica cart-external-*:
Questo viene eseguito dopo ogni render, quindi il blocco può lampeggiare a vista prima che il tuo codice lo nasconda. Il rendering condizionale non ha quel problema, quindi preferiscilo ovunque sia applicabile.
- I transform sono chiamate di set-up. Registrali all’inizio del tuo script Initialization; non serve
ready().
- I transform di tutti vengono eseguiti. Il tuo si compone con quelli registrati da altre app. Non puoi sostituire i loro, e loro non possono eliminare il tuo.
- Un transform non può cambiare prezzo, quantità o identità. Cambia solo ciò che viene renderizzato. Usa le azioni per modifiche reali.
- Un transform che lancia un errore viene saltato silenziosamente. Gli altri vengono comunque eseguiti. Controlla
aftersellCartDebugEvents durante lo sviluppo.
registerLineTransform restituisce una funzione di deregistrazione, se hai bisogno di annullarlo in seguito.