API-referens för Shopify-skript

Skript skrivs med ett Ruby-API som ger dig stor kontroll och flexibilitet.

Det finns olika skripttyper. Ett skript tilldelas en typ när du skapar det i appen Script Editor, baserat på vilken skriptmall du väljer att börja med:

Postskript

Postskript påverkar poster i varukorgen och kan ändra priser och ge rabatter. Dessa skript körs när en ändring görs i varukorgen.

Postskript som ger rabatt på en prenumeration gäller endast för den första betalningen för prenumerationen. Efterföljande betalningar rabatteras inte av skriptet.

Vissa metoder kan endast användas i postskript.

Fraktskript

Fraktskript interagerar med frakt och kan ändra leveransmetoder och ge rabatter på fraktkostnader. Dessa skript körs när kassan når sidan med leveransalternativ.

Fraktskript som ger rabatt på fraktkostnaden för en prenumeration gäller endast för den första betalningen för prenumerationen. Efterföljande betalningar rabatteras inte av skriptet.

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

Betalningsskript

Betalningsskript interagerar med betalningar och kan byta namn på, dölja och ändra ordningen på betalnings-gatewayer. Observera att betalningsskript inte interagerar med betalnings-gatewayer som visas före betalningsskärmen, till exempel Apple Pay. Dessa skript körs när kassan når betalningssidan.

Vissa metoder kan endast användas i betalningsskript.

Allmänna metoder

Följande metoder kan användas i alla typer av skript:

Indata

Skriptets indatametoder
MetodReturtypBeskrivning
.cartVarukorgReturnerar ett ändringsbart varukorgsobjekt.
.localesträngReturnerar kundens plats. Till exempel en, fr eller pt-BR.

Varukorg

Varukorgsobjektet är endast tillgängligt i webbshoppen. Vissa övergivna kassor har åtkomst till varukorgsobjektet. Men om en kassa har stängts och en kund sedan besöker den övergivna kassan skickas kunden till den förifyllda kassan och varukorgsobjektet finns inte längre. Det beror på att det digitala skyltfönstret har kringgåtts av meddelandet om övergiven varukorg.

Skriptmetoder som använder varukorgsobjektet
MetodReturtypBeskrivning
.customerKundReturnerar ägaren till varukorgen (om någon).
.shipping_addressLeveransadressReturnerar leveransadressen för ägaren till varukorgen (om någon).
.discount_codevarierar Returnerar:

discount_code finns om en rabatt har tillämpats på varukorgen. Detta betyder inte nödvändigtvis att varukorgens pris ändras. Om en rabatt till exempel gäller för varukorgar över 50 USD och ett skript sänker varukorgspriset till under 50 USD, finns discount_code fortfarande kvar men varukorgens pris ändras inte.

<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

Skriptmetoder som använder objektet CartDiscount::FixedAmount
MetodReturtypBeskrivning
.codeSträngReturnerar rabattkoden som användes för att tillämpa rabatten.
.amountPengarReturnerar rabattens belopp.
.reject({ message: String })nilAvvisar rabattkoden som tillämpats på varukorgen. Ett message krävs.
.rejected?BooleanReturnerar huruvida rabattkoden avvisades.

CartDiscount::Percentage

Skriptmetoder som använder objektet CartDiscount::Percentage
MetodReturtypBeskrivning
.codeSträngReturnerar rabattkoden som användes för att tillämpa rabatten.
.percentageDecimalReturnerar rabattens procentuella belopp.
.reject({ message: String })nilAvvisar rabattkoden som tillämpats på varukorgen. Ett message krävs.
.rejected?BooleanReturnerar huruvida rabattkoden avvisades.

CartDiscount::Shipping

Skriptmetoder som använder CartDiscount::Shipping-objektet
MetodReturtypBeskrivning
.codeSträngReturnerar rabattkoden som användes för att tillämpa rabatten.
.reject({ message: String })nilAvvisar rabattkoden som tillämpats på varukorgen. Ett message krävs.
.rejected?BooleanReturnerar huruvida rabattkoden avvisades.

Customer

Skriptmetoder som använder Customer-objektet
MetodReturtypBeskrivning
.idIntegerReturnerar kundens ID-nummer.
.emailSträngReturnerar kundens e-postadress.
.tagsList<Tag>Returnerar en lista med strängar som representerar eventuella taggar som angetts för en kund.
.orders_countIntegerReturnerar det totala antalet ordrar som en kund har lagt.
.total_spentPengarReturnerar det totala belopp som kunden har spenderat på alla ordrar.
.accepts_marketing?BooleanReturnerar om kunden godkänner marknadsföring.

LineItem

Skriptmetoder som använder LineItem-objektet
MetodReturtypBeskrivning
.gramsgramsReturnerar postens totala vikt.
.line_pricePengarPriset för posten.
.discounted?BooleanReturnerar om priset på en post har rabatterats av ett skript eller en manuellt tillämpad rabatt. Användning av rabattkoder påverkar inte returvärdet.
.propertieshashReturnerar de egenskaper som har specificerats för dessa poster.
.variantVariantReturnerar den specifika produktvariant som representeras av posten.
.quantityIntegerReturnerar kvantiteten för den här posten.
.selling_plan_idIntegerReturnerar ID för försäljningsplanen för posten. Denna metod är användbar när butiken säljer prenumerationer och du vill att skriptet ska identifiera när en produktvariant säljs som en prenumeration.

List

Skriptmetoder som använder List-objektet
MetodReturtypBeskrivning
.newListSkapar ett nytt objekt för att representera en lista.
.[]Element or nil

Returnerar elementet vid det angivna indexet.

.&List

Returnerar en ny lista som innehåller element som är gemensamma för de två listorna, utan dubbletter.

.delete_ifListRadera element med ett valfritt kodblock. Se dokumentationen för Ruby's delete_if method.
.empty?Boolean

Returnerar true om listan inte innehåller några element.

.firstElement or nil

Returnerar det första elementet, eller nil om listan är tom.

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

Returnerar index för listans första element. Om ett block anges istället för ett argument returneras index för det första elementet för vilket blocket är sant.

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

Returnerar index för listans sista element. Om ett block anges istället för ett argument returneras index för det första elementet för vilket blocket är sant.

.lastElement or nil

Returnerar det sista elementet, eller nil om listan är tom.

.lengthint

Returnerar antalet element i listan.

.sizeint

Alias för length.

.each(*args, &block)List

Anropar ett block en gång för varje element i listan och skickar elementet som en parameter till blocket.

ShippingAddress

Skriptmetoder som använder ShippingAddress-objektet
MetodReturtypBeskrivning
.namesträngReturnerar namnet på personen som är kopplad till leveransadressen.
.address1strängReturnerar gatuadressdelen av leveransadressen.
.address2strängReturnerar det valfria tilläggsfältet för gatuadressdelen av leveransadressen.
.phonesträngReturnerar telefonnumret för leveransadressen.
.citysträngReturnerar staden för leveransadressen.
.zipsträngReturnerar postnumret för leveransadressen.
.provincesträngReturnerar provinsen/delstaten för leveransadressen.
.province_codesträngReturnerar det förkortade värdet för provinsen/delstaten för leveransadressen.
.country_codesträngReturnerar det förkortade värdet för landet för leveransadressen.

Money

Skriptmetoder som använder Money-objektet
MetodReturtypBeskrivning
.derived_from_presentment(customer_cents:X)PengarKonverterar ett belopp (i cent) från kundens lokala valuta (presentationsvaluta) till din butiks valuta. Den här metoden accepterar parametern customer_cents, som accepterar ett antal i cent. Till exempel Money.derived_from_presentment(customer_cents: 500).
.newPengarSkapar ett nytt objekt för att representera ett pris.
.zeroPengar

Skapar ett nytt objekt med priset noll.

+PengarAdderar två Money-objekt.
-PengarSubtraherar ett Money-objekt från ett annat.
*PengarMultiplicerar ett Money-objekt med ett tal.

Money-exempel

Money.new(cents: 1000)

Skapar ett Money-objekt som representerar 1 000 cent eller 10 USD.

Money.new(cents: 100) * 50

Skapar ett Money-objekt som representerar 1 USD och multiplicerar sedan det beloppet med 50. Returnerar ett Money-objekt som representerar 50 USD.

Variant

Skriptmetoder som använder Variant-objektet
MetodReturtypBeskrivning
.idIntegerReturnerar variantens ID-nummer.
.pricePengarReturnerar variantens enhetspris.
.productProduktReturnerar variantens tillhörande produkt.
.skusLista<Sträng>Returnerar variantens lagerhållningsenheter (SKU:er), som ofta används för att spåra lager.
.titleSträngReturnerar variantens titel.

Produkt

Skriptmetoder som använder Produkt-objektet
MetodReturtypBeskrivning
.idIntegerReturnerar produktens ID-nummer.
.gift_card?BooleanReturnerar om produkten är ett presentkort.
.tagsList<Tag>Returnerar en lista med strängar som representerar de taggar som har angetts för den här produkten.
.product_typeSträngEn kategorisering som en produkt kan taggas med, och som vanligtvis används för filtrering och sökning.
.vendorSträngReturnerar den här produktens säljare.

Kernel

Kernel är en Ruby-modul som ingår i varje klass. Därmed är dess metoder tillgängliga för varje objekt. Dessa metoder fungerar på samma sätt som globala funktioner i andra språk.

Skriptmetoder som använder Kernel-objektet
MetodReturtypBeskrivning
.exitingenAvslutar körningen av det aktuella skriptet utan fel. Om detta körs innan något tilldelas till Output.cart har skriptet ingen effekt. Detta är ett användbart sätt att avsluta skript, till exempel om kunden inte är berättigad att köra skriptet.

Kernel-exempel

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

Metoder för poster

Följande metoder kan endast användas i skript för poster:

Varukorg

Skriptmetoder som använder Varukorg-objektet i skript för poster
MetodReturtypBeskrivning
.subtotal_price_wasPengarReturnerar varukorgens delsumma innan några rabatter tillämpades.
.subtotal_price_changed?BooleanReturnerar om delsumman har ändrats.

LineItem

Skriptmetoder som använder Post-objektet i skript för poster
MetodReturtypBeskrivning
.change_line_price(Money new_price, { message: Sträng }) PengarÄndra priset på posten till det angivna beloppet. Ett meddelande krävs. new_price måste vara lägre än det aktuella priset.
.original_line_pricePengarReturnerar det ursprungliga priset för posten innan skript och rabatter tillämpades.
.line_price_wasPengarReturnerar priset för posten innan ändringar tillämpades av det aktuella skriptet.
.line_price_changed?BooleanReturnerar om priset för posten har ändrats.
.change_properties(hash new_properties, { message: Sträng }) hashAnger nya egenskaper för en post. Den ursprungliga egenskaps-hashen lagras i properties_was och den egenskaps-hash som skickas till metoden blir de nya egenskaperna för posten.
.properties_washashReturnerar den ursprungliga egenskaps-hashen för posten innan några ändringar tillämpades.
.properties_changed?BooleanReturnerar om egenskaperna för posten har ändrats.
.split({ take: Heltal })PostDelar upp en post i två poster. take anger vilken kvantitet som ska tas bort från den ursprungliga posten för att skapa den nya posten.

.split-exempel

Det här exempelskriptet delar upp en post med namnet original_line_item i två poster. Den nya posten har kvantiteten 1 (angett av take: 1). Skriptet tillämpar sedan ett rabatterat pris på den nya posten med meddelandet ”Tredje hatten för 5 dollar”.

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

Skriptmetoder som använder Variant-objektet i skript för poster
MetodReturtypBeskrivning
.compare_at_pricePengarReturnerar variantens jämförpris. Returnerar nil om varianten inte har ett jämförpris.

Leveransmetoder

Följande metoder kan användas i frakt-skript:

Indata

Skriptmetoder som använder Input-objektet i frakt-skript
MetodReturtypBeskrivning
.shipping_ratesFraktprislistaReturnerar en lista över alla fraktkostnader.

ShippingRateList

Skriptmetoder som använder ShippingRateList-objektet i fraktskript
MetodReturtypBeskrivning
.delete_ifFraktprislistaRadera fraktkostnader med ett valfritt kodblock. Se dokumentationen för Rubys metod delete_if.
.sort!FraktprislistaSortera fraktkostnaderna med jämförelseoperatorn eller med ett valfritt kodblock. Se dokumentationen för Rubys metod sort!.
.sort_by!FraktprislistaSortera fraktkostnaderna med ett valfritt kodblock. Se dokumentationen för Rubys metod sort_by!.

ShippingRate

Skriptmetoder som använder ShippingRate-objektet i fraktskript
MetodReturtypBeskrivning
.codeSträngReturnerar koden för fraktkostnaden.
.markupPengarReturnerar redigeringstecknet för en fraktkostnad, om tillämpligt.
.nameSträngReturnerar namnet på fraktkostnaden. Det kan ändras med metoden change_name.
.pricePengarReturnerar priset för fraktkostnaden.
.sourceSträngReturnerar källan (budet) som är associerad med fraktkostnaden, om relevant. Den kan inte ändras.
.change_name(String new_name)Sträng Ändrar namnet (högst 255 tecken) på fraktkostnaden. Det går inte att ändra, radera eller dölja källan.
.apply_discount(Money discount, { message: String })PengarTillämpar en rabatt med det angivna fasta beloppet. Priset kan inte sänkas under 0. Ett meddelande krävs.
.phone_required?BooleanReturnerar true om ett telefonnummer krävs för att få fraktkostnaden, eller false om ett telefonnummer inte krävs.

Betalningsmetoder

Följande metoder kan användas i betalningsskript:

Indata

Skriptmetoder som använder Input-objektet i betalningsskript
MetodReturtypBeskrivning
.payment_gatewaysPaymentGatewaysListReturnerar en lista över alla betalnings-gatewayer i butiken.

PaymentGatewayList

Skriptmetoder som använder PaymentGatewayList-objektet i betalningsskript
MetodReturtypBeskrivning
.delete_ifPaymentGatewayListRadera betalnings-gatewayer med ett valfritt kodblock. Se dokumentationen för Rubys metod delete_if.
.sort!PaymentGatewayListSortera betalnings-gatewayer med jämförelseoperatorn eller med ett valfritt kodblock. Se dokumentationen för Rubys metod sort!.
.sort_by!PaymentGatewayListSortera betalnings-gatewayer med ett valfritt kodblock. Se dokumentationen för Rubys metod sort_by!.

PaymentGateway

MetodReturtypBeskrivning
.nameSträngReturnerar namnet på betalnings-gatewayen.
.enabled_card_brandsLista<Sträng>

Om betalnings-gatewayen har stöd för kreditkort returneras en lista över de kreditkortstyper som butiken accepterar. Om gatewayen inte har stöd för kreditkort returneras en tom lista.

.change_name(String new_name)SträngÄndrar namnet på betalnings-gatewayen. Betalnings-gatewayer med logotyper kan inte byta namn.

Exempel

I följande skriptexempel för en post sänks priset på produkten med 9 USD när en kund beställer en produkt som inte är ett presentkort. Dessutom visas det totala belopp som kunden har spenderat under alla besök i din butik:

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

Mer information

Läs mer om: