setInternalProperties er måden, du fortæller kurven, at de er én ting.
Sådan fungerer gruppering
Disse går gennem
setInternalProperties, ikke gennem Shopify. De er et render-only overlay: de når aldrig properties, gemmes aldrig i Shopify og vises aldrig på ordren.
Trin 1: find ud af, hvad din app skriver
_), som indeholder et ID, en reference eller bundlens navn. Noget som _bundle_id, _bundle_ref eller _parent_id er typisk. Notér den præcise nøgle, og om én linje er markeret som hovedproduktet.
Trin 2: map det til de kanoniske properties
Hvis din app ikke markerer et hovedprodukt, så udelad
_aftersell_cart_bundle_role helt. Kurven vælger et anker for dig.Hvad du får
bundle-objekt, og skuffen renderer bundlen som en enkelt vare:
- Børn indlejres under ankeret i stedet for at vises som separate rækker.
- Antal er atomart. Ændres bundlens antal, skaleres hvert medlem sammen, ved brug af hvert barns
perAnchorQty-ratio, så en bundle med to af én komponent bevarer det to-til-en-forhold. - Fjernelse er atomar. Fjernes bundlen, fjernes hver medlemslinje i én forespørgsel, i stedet for at efterlade forældreløse komponenter.
- Én prisrække. Hvad den viser, følger bundle price-indstillingen på Cart items-blokken: totalen for alle medlemmer eller hovedproduktets pris alene.
Sådan vælges ankeret
- Linjen med
_aftersell_cart_bundle_rolesat tilparent. - Ellers medlemmet med den højeste pris.
- Ellers det første medlem i kurven.
Regler, der er værd at kende
- En bundle kræver mindst to linjer. En enkelt linje med et bundle-ID lades i fred og renderes normalt.
- Shopifys native bundles er allerede håndteret. Linjer, som Shopify selv markerer som komponentiserede, springes over af denne gruppering og tilpasses automatisk. Du har kun brug for dette til apps, der tilføjer separate linjer.
- Transformen kører ved hver render. Hold den billig og fri for bivirkninger. Kald ikke actions og lav ikke fetch inde fra den.
- Fletning er additiv. Dine properties flettes med dem, der er sat af en anden transform. Ved en ægte konflikt om samme nøgle vinder den sidst registrerede transform.
- Gruppering kører efter skjul og omdøbning, og før sortering. Så en linje, du skjuler med
setHidden, bliver aldrig del af en bundle, og en comparator ser ankeret, ikke børnene.
Læs en bundle tilbage
bundle.memberKeys, som indeholder key for hvert medlem inklusive ankeret.
Brug det til andre ting
setInternalProperties blev bygget til, men overlayet er en generel kanal for render-only data, du udleder af en linje. Alt, du lægger der, kan læses på line.internalProperties og i en Custom code-blok, uden at røre den rigtige kurv:
properties[...]-input på produktformularen, så den når Shopify, uanset hvem der udfører tilføjelsen.
Hvor du kan gå hen herfra
registerLineTransform: hooken dette kører igennem.- Cart-objektet: formen på
bundleog dens børn. - Cart items-blokken: bundle price-indstillingen.