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.
På den här sidan
Allmänna metoder
Följande metoder kan användas i alla typer av skript:
Indata
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .cart | Varukorg | Returnerar ett ändringsbart varukorgsobjekt. |
| .locale | sträng | Returnerar 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.
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .customer | Kund | Returnerar ägaren till varukorgen (om någon). |
| .shipping_address | Leveransadress | Returnerar leveransadressen för ägaren till varukorgen (om någon). |
| .discount_code | varierar |
Returnerar:
|
CartDiscount::FixedAmount
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .code | Sträng | Returnerar rabattkoden som användes för att tillämpa rabatten. |
| .amount | Pengar | Returnerar rabattens belopp. |
| .reject({ message: String }) | nil | Avvisar rabattkoden som tillämpats på varukorgen. Ett message krävs. |
| .rejected? | Boolean | Returnerar huruvida rabattkoden avvisades. |
CartDiscount::Percentage
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .code | Sträng | Returnerar rabattkoden som användes för att tillämpa rabatten. |
| .percentage | Decimal | Returnerar rabattens procentuella belopp. |
| .reject({ message: String }) | nil | Avvisar rabattkoden som tillämpats på varukorgen. Ett message krävs. |
| .rejected? | Boolean | Returnerar huruvida rabattkoden avvisades. |
CartDiscount::Shipping
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .code | Sträng | Returnerar rabattkoden som användes för att tillämpa rabatten. |
| .reject({ message: String }) | nil | Avvisar rabattkoden som tillämpats på varukorgen. Ett message krävs. |
| .rejected? | Boolean | Returnerar huruvida rabattkoden avvisades. |
Customer
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .id | Integer | Returnerar kundens ID-nummer. |
| Sträng | Returnerar kundens e-postadress. | |
| .tags | List<Tag> | Returnerar en lista med strängar som representerar eventuella taggar som angetts för en kund. |
| .orders_count | Integer | Returnerar det totala antalet ordrar som en kund har lagt. |
| .total_spent | Pengar | Returnerar det totala belopp som kunden har spenderat på alla ordrar. |
| .accepts_marketing? | Boolean | Returnerar om kunden godkänner marknadsföring. |
LineItem
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .grams | grams | Returnerar postens totala vikt. |
| .line_price | Pengar | Priset för posten. |
| .discounted? | Boolean | Returnerar 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. |
| .properties | hash | Returnerar de egenskaper som har specificerats för dessa poster. |
| .variant | Variant | Returnerar den specifika produktvariant som representeras av posten. |
| .quantity | Integer | Returnerar kvantiteten för den här posten. |
| .selling_plan_id | Integer | Returnerar 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
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .new | List | Skapar 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_if | List | Radera element med ett valfritt kodblock. Se dokumentationen för Ruby's delete_if method. |
| .empty? | Boolean |
Returnerar |
| .first | Element or nil |
Returnerar det första elementet, eller |
| .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. |
| .last | Element or nil |
Returnerar det sista elementet, eller |
| .length | int |
Returnerar antalet element i listan. |
| .size | int |
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
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .name | sträng | Returnerar namnet på personen som är kopplad till leveransadressen. |
| .address1 | sträng | Returnerar gatuadressdelen av leveransadressen. |
| .address2 | sträng | Returnerar det valfria tilläggsfältet för gatuadressdelen av leveransadressen. |
| .phone | sträng | Returnerar telefonnumret för leveransadressen. |
| .city | sträng | Returnerar staden för leveransadressen. |
| .zip | sträng | Returnerar postnumret för leveransadressen. |
| .province | sträng | Returnerar provinsen/delstaten för leveransadressen. |
| .province_code | sträng | Returnerar det förkortade värdet för provinsen/delstaten för leveransadressen. |
| .country_code | sträng | Returnerar det förkortade värdet för landet för leveransadressen. |
Money
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .derived_from_presentment(customer_cents:X) | Pengar | Konverterar 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). |
| .new | Pengar | Skapar ett nytt objekt för att representera ett pris. |
| .zero | Pengar |
Skapar ett nytt objekt med priset noll. |
| + | Pengar | Adderar två Money-objekt. |
| - | Pengar | Subtraherar ett Money-objekt från ett annat. |
| * | Pengar | Multiplicerar 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) * 50Skapar ett Money-objekt som representerar 1 USD och multiplicerar sedan det beloppet med 50. Returnerar ett Money-objekt som representerar 50 USD.
Variant
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .id | Integer | Returnerar variantens ID-nummer. |
| .price | Pengar | Returnerar variantens enhetspris. |
| .product | Produkt | Returnerar variantens tillhörande produkt. |
| .skus | Lista<Sträng> | Returnerar variantens lagerhållningsenheter (SKU:er), som ofta används för att spåra lager. |
| .title | Sträng | Returnerar variantens titel. |
Produkt
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .id | Integer | Returnerar produktens ID-nummer. |
| .gift_card? | Boolean | Returnerar om produkten är ett presentkort. |
| .tags | List<Tag> | Returnerar en lista med strängar som representerar de taggar som har angetts för den här produkten. |
| .product_type | Sträng | En kategorisering som en produkt kan taggas med, och som vanligtvis används för filtrering och sökning. |
| .vendor | Sträng | Returnerar 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.
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .exit | ingen | Avslutar 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
endMetoder för poster
Följande metoder kan endast användas i skript för poster:
Varukorg
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .subtotal_price_was | Pengar | Returnerar varukorgens delsumma innan några rabatter tillämpades. |
| .subtotal_price_changed? | Boolean | Returnerar om delsumman har ändrats. |
LineItem
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .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_price | Pengar | Returnerar det ursprungliga priset för posten innan skript och rabatter tillämpades. |
| .line_price_was | Pengar | Returnerar priset för posten innan ändringar tillämpades av det aktuella skriptet. |
| .line_price_changed? | Boolean | Returnerar om priset för posten har ändrats. |
| .change_properties(hash new_properties, { message: Sträng }) | hash | Anger 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_was | hash | Returnerar den ursprungliga egenskaps-hashen för posten innan några ändringar tillämpades. |
| .properties_changed? | Boolean | Returnerar om egenskaperna för posten har ändrats. |
| .split({ take: Heltal }) | Post | Delar 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
endVariant
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .compare_at_price | Pengar | Returnerar 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
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .shipping_rates | Fraktprislista | Returnerar en lista över alla fraktkostnader. |
ShippingRateList
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .delete_if | Fraktprislista | Radera fraktkostnader med ett valfritt kodblock. Se dokumentationen för Rubys metod delete_if. |
| .sort! | Fraktprislista | Sortera fraktkostnaderna med jämförelseoperatorn eller med ett valfritt kodblock. Se dokumentationen för Rubys metod sort!. |
| .sort_by! | Fraktprislista | Sortera fraktkostnaderna med ett valfritt kodblock. Se dokumentationen för Rubys metod sort_by!. |
ShippingRate
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .code | Sträng | Returnerar koden för fraktkostnaden. |
| .markup | Pengar | Returnerar redigeringstecknet för en fraktkostnad, om tillämpligt. |
| .name | Sträng | Returnerar namnet på fraktkostnaden. Det kan ändras med metoden change_name. |
| .price | Pengar | Returnerar priset för fraktkostnaden. |
| .source | Sträng | Returnerar 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 }) | Pengar | Tillämpar en rabatt med det angivna fasta beloppet. Priset kan inte sänkas under 0. Ett meddelande krävs. |
| .phone_required? | Boolean | Returnerar 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
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .payment_gateways | PaymentGatewaysList | Returnerar en lista över alla betalnings-gatewayer i butiken. |
PaymentGatewayList
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .delete_if | PaymentGatewayList | Radera betalnings-gatewayer med ett valfritt kodblock. Se dokumentationen för Rubys metod delete_if. |
| .sort! | PaymentGatewayList | Sortera betalnings-gatewayer med jämförelseoperatorn eller med ett valfritt kodblock. Se dokumentationen för Rubys metod sort!. |
| .sort_by! | PaymentGatewayList | Sortera betalnings-gatewayer med ett valfritt kodblock. Se dokumentationen för Rubys metod sort_by!. |
PaymentGateway
| Metod | Returtyp | Beskrivning |
|---|---|---|
| .name | Sträng | Returnerar namnet på betalnings-gatewayen. |
| .enabled_card_brands | Lista<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: