Tilpasset skabelon vs. Custom code-blok
- En tilpasset skabelon erstatter renderingen af en eksisterende blok med din egen markup og giver dig den bloks egne data (Headerens titel og vareantal, Summarys totaler og så videre). Den tilføjer intet nyt; den restyler én blok.
- Custom code-blokken tilføjer en ny blok med vilkårlig HTML eller React hvor som helst i carten.
Brug af en tilpasset skabelon
- Vælg en blok i editoren, og åbn dens Code-fane.
- Redigér standardskabelonen. Tilpassede skabeloner er kun JSX (valget mellem HTML og JSX er eksklusivt for Custom code-blokken).
- Klik på Compile. Kompilering fjerner typerne og transpilerer JSX’en, så den fanger syntaks-fejl. Typefejl stopper ikke en kompilering — editoren markerer dem inline, mens du skriver, med den samme IntelliSense, der autoudfylder blokkens props.
- Slå skabelonen til, så carten bruger den i stedet for den indbyggede rendering.
- Reset to default gendanner blokkens oprindelige skabelon når som helst.
At skrive en skabelon med AI
- Kompileringsreglerne (ét enkelt udtryk, ingen
export default, ingen imports) - De præcise props, blokken modtager, matchende det, editorens IntelliSense viser
- Den låste funktionssignatur, editoren håndhæver
- Blokspecifikke regler (pengeformater, hvilke handlers der skal kobles, tilgængelighedskrav)
- En udfyldningssektion, hvor du indsætter din nuværende skabelon og beskriver den ændring, du ønsker
Prompten er specifik for hver blok. Copy AI prompt-knappen vises kun på blokke, der understøtter tilpassede skabeloner.
Hvad din skabelon erstatter
Hvad du beholder: blokkens position i carten, dens synligheds-knap, dens indstillinger (som stadig føder de props, du modtager), cartens Tilpasset CSS-panel og den indbyggede indlæsnings-skeleton.
Det sidste overrasker folk. Blokken tjekker, om carten stadig indlæses, før den når din skabelon, så den indbyggede skeleton renderes under indlæsning, og din skabelon kører først, når carten er klar. Du behøver ikke bygge en indlæsningstilstand.
Hvad der er tilgængeligt inde i en skabelon
- Du får fem hooks:
useState,useEffect,useMemo,useRefoguseCallback. PlusFragment, til<>…</>. - Der er ingen imports. Du kan ikke
importe noget, og der er intetReact-objekt i scope, så ingenReact.useReducer, ingenReact.Children. Hvis en hook ikke er på listen ovenfor, er den ikke tilgængelig. - Props er skrivebeskyttede. At mutere en prop gør ikke noget nyttigt. For at ændre carten skal du bruge de handler-props, blokken giver dig (
onClose,increment,selectPlanog så videre) i stedet for at skrive direkte til props. windowkan nås, så en skabelon kan kalde Cart SDK viawindow.aftersell.cart, når den har brug for noget, blokkens props ikke dækker.
Konventioner på tværs af alle blokke
*Html-props er præ-saneret rich text. Render dem meddangerouslySetInnerHTML. De har allerede været gennem cartens sanitizer, og forhandler-tokens som{{total_price}}er allerede udfyldt.- Priser, der ankommer som
string, er allerede formateret i butikkens pengeformat. Priser somnumberer i cent. En blok giver dig det ene eller det andet, og hver bloks tabel angiver hvilket. isLoadinger altidfalseinde i en skabelon. Blokken renderer sin indbyggede skeleton og kalder først din skabelon, når carten er indlæst, så proppen videregives for fuldstændighedens skyld snarere end for, at du skal forgrene på den.
Nogle få blokke returnerer slet intet i visse tilstande, så din skabelon kaldes aldrig med tomme data. Rewards-skabelonen ser aldrig en tom
milestones, og Subscription upgrade-skabelonen ser aldrig et null-view. Hver bloks reference angiver, hvor dette gælder, så du kan springe tom-tilstands-forgreningen over.Styling af en tilpasset skabelon
De to klassefamilier
Så
cart-internal-header__title er det, der får titlen til at ligne den indbyggede titel, og cart-external-header__title er håndtaget, du skal gribe, når du vil ændre, hvordan den ser ud.
Små ændringer: behold begge klassenavne
cart-external-*-krogene.
Omstrukturering: drop begge klassenavne
cart-internal-*, fordi den indbyggede CSS blev skrevet til den indbyggede DOM. Behold de klasser på omstruktureret markup, og du arver layoutregler, der forudsætter elementer, du ikke længere har: flex-containere, der forventer andre børn, afstande mellem elementer, der er flyttet, positionering i forhold til noget, du har fjernet. Dette viser sig som regel ved, at din egen CSS “ikke virker”, når det er de indbyggede regler, der vinder.
To måder at style det, du har bygget:
Mulighed 1: dine egne klassenavne plus Custom CSS
.header eller .title at kollidere med cartens egne klasser, en anden apps skabelon eller en fremtidig blok.
Mulighed 2: inline-stile
:hover eller andre pseudoklasser, ingen media queries og ingen genbrug på tværs af blokke. Gå til Mulighed 1, når du vil have noget af det.
Valg af tilgang
Carten renderes i en shadow root, så dit temas stylesheet kan ikke nå ind i den. Stile til en tilpasset skabelon skal komme fra cartens eget Custom CSS-panel eller fra inline-stile, ikke fra dit tema. Se Tilpasset CSS.
Når en skabelon fejler
Fordi blokken forsvinder i stilhed i stedet for at fejle synligt, bør du altid tjekke en skabelon i forhåndsvisning, før du publicerer. Hvis en blok er forsvundet, skal du først åbne browserkonsollen.
To ting, der er værd at gardere sig mod, da begge crasher en skabelon, der antager andet:
- Props, der kan være null. Mange props er
nullunder normale forhold (logoUrluden logo,imageUrluden billede,variantTitlepå et produkt med én variant). Tjek, før du bruger dem. - Arrays, der kan være tomme.
discountTagsogdiscountCodeser langt oftere[]end ej.
Begrænsninger
- Tilpassede skabeloner er visningstilsidesættelser. For at køre logik mod carten (abonnere på events, tilføje varer, reagere på ændringer) skal du bruge Tilpassede scripts og Cart SDK.
- Næsten alle blokke understøtter en. Undtagelserne er Express payments-blokken, som rummer Shopifys egne betalingsknapper, og selve Cart items-containeren, selvom Product-rækken inde i den understøtter en tilpasset skabelon.
- En skabelon kan ikke ændre, hvad en blok grundlæggende gør. Den ændrer, hvordan blokkens data præsenteres, ikke dataene eller adfærden bag dem.
Props for hver blok
Custom code-blokken er den ene flade, der tilføjer markup i stedet for at erstatte en bloks rendering, så dens props er anderledes: hele carten, plus en læg-i-kurv-handling. Se Custom code-blokke → Props.