API-reference til Shopify-scripts

Scripts skrives med en Ruby-API, der giver dig en stor grad af kontrol og fleksibilitet.

Der findes forskellige scripttyper. Et script tildeles en type, når du opretter det i appen Script Editor, baseret på den scriptskabelon du vælger at starte med:

Scripts til varelinjer

Scripts til varelinjer påvirker varelinjer i indkøbskurven og kan ændre priser og tildele rabatter. Disse scripts køres, når der foretages en ændring i indkøbskurven.

Scripts til varelinjer, der giver rabat på et abonnement, gælder kun for den første betaling for abonnementet. Efterfølgende betalinger får ikke rabat via scriptet.

Nogle metoder kan kun bruges i scripts til varelinjer.

Scripts til forsendelse

Scripts til forsendelse interagerer med forsendelse og kan ændre leveringsmetoder samt give rabat på leveringspriser. Disse scripts køres, når betalingsprocessen når til siden med leveringsmuligheder.

Scripts til forsendelse, der giver rabat på leveringsprisen for et abonnement, gælder kun for den første betaling for abonnementet. Efterfølgende betalinger får ikke rabat via scriptet.

<p>Some methods <a href="#shipping-methods">can only be used in shipping scripts</a>.</p>

Betalingsscripts

Betalingsscripts interagerer med betalinger og kan omdøbe, skjule og omarrangere betalingsgateways. Bemærk, at betalingsscripts ikke interagerer med betalingsgateways, der vises før betalingssiden, som f.eks. Apple Pay. Disse scripts køres, når betalingsprocessen når til betalingssiden.

Nogle metoder kan kun bruges i betalingsscripts.

Generelle metoder

Følgende metoder kan bruges i alle scripttyper:

Input

Inputmetoder til scripts
MetodeReturtypeBeskrivelse
.cartCartReturnerer et redigerbart Cart-objekt.
.localestrengReturnerer kundens landestandard. F.eks. en, fr eller pt-BR.

Cart

`Cart`-objektet er kun tilgængeligt i webshoppen. Visse forladte betalinger har adgang til `Cart`-objektet. Hvis en betalingsproces er blevet lukket, og en kunde derefter besøger den forladte betaling, sendes kunden dog til den forudfyldte betalingsside, og `Cart`-objektet findes ikke længere. Dette skyldes, at butikslayoutet er blevet sprunget over via mailen om forladt betaling.

Scriptmetoder, der bruger Cart-objektet
MetodeReturtypeBeskrivelse
.customerCustomerReturnerer ejeren af indkøbskurven (hvis der er en).
.shipping_addressShippingAddressReturnerer leveringsadressen for ejeren af indkøbskurven (hvis der er en).
.discount_codevarierer Returnerer:

discount_code findes, hvis der er føjet en rabat til indkøbskurven. Dette betyder ikke nødvendigvis, at prisen på indkøbskurven ændres. Hvis en rabat f.eks. gælder for indkøbskurve over 50 USD, og et script reducerer prisen på indkøbskurven til under 50 USD, er discount_code stadig til stede, men prisen på indkøbskurven ændres ikke.

<p><a href="/manual/checkout-settings/script-editor/examples/vat-script">See an example of <code>discount_code</code></a>.</p>
  </td>
</tr>
<tr>
  <td scope="row">.line_items</td>
  <td><a href="#list">List</a>&lt;LineItem&gt;</td>
  <td>Returns a list containing the line items in the cart.</td>
</tr>
<tr>
  <td scope="row">.presentment_currency</td>
  <td><a href="#list">List</a>&lt;String&gt;</td>
  <td>Returns the customer's local (presentment) currency (in <a href="https://www.iso.org/iso-4217-currency-codes.html">ISO 4217</a> format). For example, USD. </td>
</tr>
<tr>
  <td scope="row">.subtotal_price</td>
  <td><a href="#money">Money</a></td>
  <td>Returns the subtotal price of the cart after line item discounts are applied but before discount codes are applied.</td>
</tr>
<tr>
  <td scope="row">.total_weight</td>
  <td><a href="https://shopify.dev/api/liquid/objects/line_item#line_item-grams">grams</a></td>
  <td>Returns the total weight of all the line items in the cart.</td>
</tr>

CartDiscount::FixedAmount

Scriptmetoder, der bruger CartDiscount::FixedAmount-objektet
MetodeReturtypeBeskrivelse
.codeStrengReturnerer den rabatkode, der er brugt til at anvende rabatten.
.amountMoneyReturnerer rabattens beløb.
.reject({ message: String })nilAfviser den rabatkode, der er anvendt på indkøbskurven. En message er påkrævet.
.rejected?BooleskReturnerer, om rabatkoden blev afvist.

CartDiscount::Percentage

Scriptmetoder, der bruger CartDiscount::Percentage-objektet
MetodeReturtypeBeskrivelse
.codeStrengReturnerer den rabatkode, der er brugt til at anvende rabatten.
.percentageDecimaltalReturnerer rabatbeløbet i procent.
.reject({ message: String })nilAfviser den rabatkode, der er anvendt på indkøbskurven. En message er påkrævet.
.rejected?BooleskReturnerer, om rabatkoden blev afvist.

CartDiscount::Shipping

Script-metoder, der bruger CartDiscount::Shipping-objektet
MetodeReturtypeBeskrivelse
.codeStrengReturnerer den rabatkode, der er brugt til at anvende rabatten.
.reject({ message: String })nilAfviser den rabatkode, der er anvendt på indkøbskurven. En message er påkrævet.
.rejected?BooleskReturnerer, om rabatkoden blev afvist.

Kunde

Script-metoder, der bruger Kunde-objektet
MetodeReturtypeBeskrivelse
.idHeltalReturnerer kundens id-nummer.
.emailStrengReturnerer kundens mailadresse.
.tagsListe<Tag>Returnerer en liste over strenge, der repræsenterer de tags, som er angivet for en kunde.
.orders_countHeltalReturnerer det samlede antal ordrer, som en kunde har afgivet.
.total_spentMoneyReturnerer det samlede beløb, som kunden har brugt på alle ordrer.
.accepts_marketing?BooleskReturnerer, om kunden accepterer markedsføring.

Varelinje

Script-metoder, der bruger Varelinje-objektet
MetodeReturtypeBeskrivelse
.gramsgramReturnerer den samlede vægt for varelinjen.
.line_priceMoneyPrisen på varelinjen.
.discounted?BooleskReturnerer, om prisen på en varelinje er blevet nedsat med rabat af et script eller en manuelt anvendt rabat. Brugen af rabatkoder påvirker ikke returværdien.
.propertieshashReturnerer de egenskaber, der er angivet for denne varelinje.
.variantVariantReturnerer den specifikke produktvariant, som varelinjen repræsenterer.
.quantityHeltalReturnerer antallet for denne varelinje.
.selling_plan_idHeltalReturnerer id'et for salgsplanen for varelinjen. Denne metode er nyttig, når butikken sælger abonnementer, og du vil have scriptet til at registrere, når en produktvariant sælges som et abonnement.

Liste

Script-metoder, der bruger Liste-objektet
MetodeReturtypeBeskrivelse
.newListeOpretter et nyt objekt til at repræsentere en liste.
.[]Element eller nil

Returnerer elementet på det angivne indeks.

.&Liste

Returnerer en ny liste, der indeholder de elementer, der er fælles for de to lister, uden dubletter.

.delete_ifListeSlet elementer ved hjælp af en valgfri kodeblok. Se dokumentationen for Rubys delete_if-metode.
.empty?Boolesk

Returnerer true, hvis listen ikke indeholder nogen elementer.

.firstElement eller nil

Returnerer det første element eller nil, hvis listen er tom.

.index(*args, &block)int eller nil

Returnerer indekset på det første element på listen. Hvis der angives en blok i stedet for et argument, returneres indekset på det første element, for hvilket blokken er sand.

.rindex(*args, &block)int eller nil

Returnerer indekset på det sidste element på listen. Hvis der angives en blok i stedet for et argument, returneres indekset på det første element, for hvilket blokken er sand.

.lastElement eller nil

Returnerer det sidste element eller nil, hvis listen er tom.

.lengthint

Returnerer antallet af elementer på listen.

.sizeint

Alias for length.

.each(*args, &block)Liste

Kalder en blok én gang for hvert element på listen og overfører elementet som en parameter til blokken.

Leveringsadresse

Script-metoder, der bruger Leveringsadresse-objektet
MetodeReturtypeBeskrivelse
.namestrengReturnerer navnet på den person, der er knyttet til leveringsadressen.
.address1strengReturnerer gadeadressen for leveringsadressen.
.address2strengReturnerer det valgfrie, yderligere felt til gadeadressen.
.phonestrengReturnerer telefonnummeret for leveringsadressen.
.citystrengReturnerer byen for leveringsadressen.
.zipstrengReturnerer postnummeret for leveringsadressen.
.provincestrengReturnerer provinsen/delstaten for leveringsadressen.
.province_codestrengReturnerer den forkortede værdi for provinsen/delstaten for leveringsadressen.
.country_codestrengReturnerer den forkortede værdi for landet for leveringsadressen.

Penge

Script-metoder, der bruger Penge-objektet
MetodeReturtypeBeskrivelse
.derived_from_presentment(customer_cents:X)MoneyKonverterer et beløb (i cent) fra kundens lokale valuta (præsentationsvaluta) til butikkens valuta. Denne metode accepterer parameteren customer_cents, som accepterer et tal i cent. For eksempel Money.derived_from_presentment(customer_cents: 500).
.newMoneyOpretter et nyt objekt, der repræsenterer en pris.
.zeroMoney

Opretter et nyt objekt med en pris på nul.

+MoneyLægger to Money-objekter sammen.
-MoneyTrækker et Money-objekt fra et andet.
*MoneyGanger et Money-objekt med et tal.

Eksempler på Penge

Money.new(cents: 1000)

Opretter et Money-objekt, der repræsenterer 1.000 cent, eller 10 USD.

Money.new(cents: 100) * 50

Opretter et Money-objekt, der repræsenterer 1 USD, og ganger derefter beløbet med 50. Returnerer et Money-objekt, der repræsenterer 50 USD.

Variant

Scriptmetoder, der bruger Variant-objektet
MetodeReturtypeBeskrivelse
.idHeltalReturnerer id-nummeret for varianten.
.priceMoneyReturnerer stykprisen for varianten.
.productProduktReturnerer det tilknyttede produkt for varianten.
.skusListe<Streng>Returnerer SKU-numrene for varianten, som ofte bruges til lagerstyring.
.titleStrengReturnerer titlen på varianten.

Produkt

Scriptmetoder, der bruger Produkt-objektet
MetodeReturtypeBeskrivelse
.idHeltalReturnerer id-nummeret for produktet.
.gift_card?BooleskReturnerer, om produktet er et gavekort.
.tagsListe<Tag>Returnerer en liste over strenge, der repræsenterer de tags, der er angivet for dette produkt.
.product_typeStrengEn kategorisering, som et produkt kan tagges med, og som ofte bruges til filtrering og søgning.
.vendorStrengReturnerer forhandleren af dette produkt.

Kernel

Kernel er et Ruby-modul, som er inkluderet i alle klasser. Derfor er dets metoder tilgængelige for alle objekter. Disse metoder fungerer på samme måde som globale funktioner i andre sprog.

Scriptmetoder, der bruger Kernel-objektet
MetodeReturtypeBeskrivelse
.exitingenAfslutter kørslen af det aktuelle script uden fejl. Hvis dette køres, før noget er tildelt Output.cart, har scriptet ingen effekt. Dette er en nyttig måde at afslutte scripts på, f.eks. hvis kunden ikke er berettiget til at køre scriptet.

Kernel-eksempel

customer = Input.cart.customer
if customer && customer.email.end_with?("@mycompany.com")
  # Employees are not eligible for this promotion.
  exit
end

Metoder for varelinjer

Følgende metoder kan kun bruges i scripts for varelinjer:

Cart

Scriptmetoder, der bruger Indkøbskurv-objektet i scripts for varelinjer
MetodeReturtypeBeskrivelse
.subtotal_price_wasMoneyReturnerer indkøbskurvens subtotalpris, før der blev anvendt nogen rabatter.
.subtotal_price_changed?BooleskReturnerer, om subtotalprisen er blevet ændret.

Varelinje

Scriptmetoder, der bruger Varelinje-objektet i scripts for varelinjer
MetodeReturtypeBeskrivelse
.change_line_price(Penge new_price, { message: Streng }) MoneyÆndrer varelinjens pris til det angivne beløb. En message er påkrævet. new_price skal være lavere end den nuværende pris.
.original_line_priceMoneyReturnerer den oprindelige pris for varelinjen, før der blev anvendt scripts og rabatter.
.line_price_wasMoneyReturnerer prisen på varelinjen, før det aktuelle script anvendte ændringer.
.line_price_changed?BooleskReturnerer, om prisen for varelinjen er blevet ændret.
.change_properties(hash new_properties, { message: Streng }) hashAngiver nye egenskaber for en varelinje. Den oprindelige hash med egenskaber gemmes i properties_was, og den hash med egenskaber, der sendes til metoden, bliver de nye egenskaber for varelinjen.
.properties_washashReturnerer den oprindelige hash med egenskaber for varelinjen, før der blev anvendt nogen ændringer.
.properties_changed?BooleskReturnerer, om egenskaberne for varelinjen er blevet ændret.
.split({ take: Heltal })VarelinjeOpdeler en varelinje i to varelinjer. take angiver, hvilket antal der skal fjernes fra den oprindelige varelinje for at oprette den nye varelinje.

.split-eksempel

Dette eksempelscript opdeler en varelinje med navnet original_line_item i to varelinjer. Den nye varelinje har et antal på 1 (angivet af take: 1). Scriptet anvender derefter en rabatpris på den nye varelinje med beskeden "Third hat for 5 dollars".

if original_line_item.quantity >= 3
  new_line_item = original_line_item.split(take: 1)
  new_line_item.change_line_price(Money.new(cents: 500), message: "Third hat for 5 dollars")
  cart.line_items << new_line_item
end

Variant

Scriptmetoder, der bruger Variant-objektet i scripts for varelinjer
MetodeReturtypeBeskrivelse
.compare_at_priceMoneyReturnerer variantens førpris. Returnerer nil, hvis varianten ikke har en førpris.

Leveringsmetoder

Følgende metoder kan bruges i forsendelsesscripts:

Input

Scriptmetoder, der bruger Input-objektet i forsendelsesscripts
MetodeReturtypeBeskrivelse
.shipping_ratesListe over forsendelsespriserReturnerer en liste over alle leveringspriser.

ShippingRateList

Scriptmetoder, der bruger objektet ShippingRateList i forsendelsesscripts
MetodeReturtypeBeskrivelse
.delete_ifListe over forsendelsespriserSlet leveringspriser ved hjælp af en valgfri kodeblok. Se dokumentationen til Ruby-metoden delete_if.
.sort!Liste over forsendelsespriserSortér leveringspriserne ved hjælp af sammenligningsoperatoren eller en valgfri kodeblok. Se dokumentationen til Ruby-metoden sort!.
.sort_by!Liste over forsendelsespriserSortér leveringspriserne ved hjælp af en valgfri kodeblok. Se dokumentationen til Ruby-metoden sort_by!.

ShippingRate

Scriptmetoder, der bruger objektet ShippingRate i forsendelsesscripts
MetodeReturtypeBeskrivelse
.codeStrengReturnerer leveringsprisens kode.
.markupMoneyReturnerer avancen for en leveringspris, hvis det er relevant.
.nameStrengReturnerer navnet på leveringsprisen. Det kan redigeres med metoden change_name.
.priceMoneyReturnerer prisen på leveringsprisen.
.sourceStrengReturnerer den kilde (fragtfirmaet), der er knyttet til leveringsprisen, hvis det er relevant. Den kan ikke redigeres.
.change_name(String new_name)Streng Ændrer navnet (maks. 255 tegn) på leveringsprisen. Det er ikke muligt at ændre, slette eller skjule kilden.
.apply_discount(Money discount, { message: String })MoneyAnvender en rabat med det angivne faste beløb. Prisen kan ikke reduceres til under 0. Der kræves en besked.
.phone_required?BooleskReturnerer true, hvis der kræves et telefonnummer for at få leveringsprisen, eller false, hvis der ikke kræves et telefonnummer.

Betalingsmetoder

Følgende metoder kan bruges i betalingsscripts:

Input

Scriptmetoder, der bruger objektet Input i betalingsscripts
MetodeReturtypeBeskrivelse
.payment_gatewaysPaymentGatewaysListReturnerer en liste over alle betalingsgateways i butikken.

PaymentGatewayList

Scriptmetoder, der bruger objektet PaymentGatewayList i betalingsscripts
MetodeReturtypeBeskrivelse
.delete_ifPaymentGatewayListSlet betalingsgateways ved hjælp af en valgfri kodeblok. Se dokumentationen til Ruby-metoden delete_if.
.sort!PaymentGatewayListSortér betalingsgateways ved hjælp af sammenligningsoperatoren eller en valgfri kodeblok. Se dokumentationen til Ruby-metoden sort!.
.sort_by!PaymentGatewayListSortér betalingsgateways ved hjælp af en valgfri kodeblok. Se dokumentationen til Ruby-metoden sort_by!.

PaymentGateway

MetodeReturtypeBeskrivelse
.nameStrengReturnerer navnet på betalingsgatewayen.
.enabled_card_brandsListe<Streng>

Hvis betalingsgatewayen understøtter kreditkort, returneres en liste over de kreditkorttyper, som butikken accepterer. Hvis gatewayen ikke understøtter kreditkort, returneres en tom liste.

.change_name(String new_name)StrengÆndrer navnet på betalingsgatewayen. Betalingsgateways med logoer kan ikke omdøbes.

Eksempler

I følgende eksempel på et varelinjescript reduceres prisen på produktet med 9 USD, når en kunde bestiller et produkt, der ikke er et gavekort. Det samlede beløb, som kunden har brugt på tværs af alle besøg i din butik, vises også:

customer = Input.cart.customer
Input.cart.line_items.each do |line_item|
  product = line_item.variant.product
  next if product.gift_card?
  line_item.change_line_price(line_item.line_price - Money.new(cents: 900), message: customer.total_spent)
end

Output.cart = Input.cart

Få mere at vide

Få mere at vide om: