setInternalProperties vertel je de winkelwagen dat ze één geheel zijn.
Hoe groeperen werkt
Deze gaan via
setInternalProperties, niet via Shopify. Ze zijn een render-only overlay: ze bereiken nooit properties, worden nooit naar Shopify gepersisteerd en verschijnen nooit op de bestelling.
Stap 1: ontdek wat je app schrijft
_) met een ID, een referentie of de naam van de bundel. Iets als _bundle_id, _bundle_ref of _parent_id is typisch. Noteer de exacte key, en of één regel gemarkeerd is als het hoofdproduct.
Stap 2: map het op de canonieke properties
Als je app geen hoofdproduct markeert, laat
_aftersell_cart_bundle_role dan helemaal weg. De winkelwagen kiest een anker voor je.Wat je krijgt
bundle-object en rendert de drawer de bundel als één item:
- Kinderen nesten onder het anker in plaats van als aparte rijen te verschijnen.
- Aantal is atomair. Het aantal van de bundel wijzigen schaalt elk lid mee, met de
perAnchorQty-verhouding van elk kind, zodat een bundel met twee van één onderdeel die twee-op-één-verhouding behoudt. - Verwijderen is atomair. De bundel verwijderen verwijdert elke lidregel in één request, in plaats van verweesde onderdelen achter te laten.
- Eén prijsregel. Wat er wordt getoond volgt de bundle price-instelling op het Cart items-block: het totaal van alle leden, of alleen de prijs van het hoofdproduct.
Hoe het anker wordt gekozen
- De regel met
_aftersell_cart_bundle_roleopparent. - Anders, het lid met de hoogste prijs.
- Anders, het eerste lid in de winkelwagen.
Regels die je moet kennen
- Een bundel heeft minimaal twee regels nodig. Een enkele regel met een bundel-ID wordt met rust gelaten en rendert normaal.
- Native Shopify-bundels worden al afgehandeld. Regels die Shopify zelf als gecomponentiseerd markeert, worden door deze groepering overgeslagen en automatisch aangepast. Je hebt dit alleen nodig voor apps die losse regels toevoegen.
- De transform draait bij elke render. Houd hem goedkoop en vrij van neveneffecten. Roep er geen actions in aan en doe er geen fetch in.
- Samenvoegen is additief. Jouw properties worden samengevoegd met properties die door een andere transform zijn gezet. Bij een echt conflict over dezelfde key wint de laatst geregistreerde transform.
- Groeperen draait na verbergen en hernoemen, en vóór sorteren. Dus een regel die je verbergt met
setHiddenwordt nooit onderdeel van een bundel, en een comparator ziet het anker, niet de kinderen.
Een bundel teruglezen
bundle.memberKeys, dat de key van elk lid inclusief het anker bevat.
Het voor andere dingen gebruiken
setInternalProperties is gebouwd, maar de overlay is een algemeen kanaal voor render-only data die je afleidt uit een regel. Alles wat je erin zet is leesbaar op line.internalProperties en in een Custom code block, zonder de echte winkelwagen aan te raken:
properties[...]-input op het productformulier, zodat ze Shopify bereikt wie de toevoeging ook uitvoert.
Waar je verder kunt kijken
registerLineTransform: de hook waar dit doorheen loopt.- Cart object: de vorm van
bundleen zijn kinderen. - Cart items block: de bundle price-instelling.