Shopify Scripts API atsauce

Skripti tiek rakstīti ar Ruby API, kas sniedz lielisku kontroli un pielāgojamību.

Ir dažādi skriptu veidi. Skriptam veids tiek piešķirts tā izveides laikā lietotnē Script Editor, pamatojoties uz to, kuru skripta veidni tu izvēlies kā sākumpunktu:

Rindas vienumu skripti

Rindas vienumu skripti ietekmē grozā esošos rindas vienumus un var mainīt cenas, kā arī piešķirt atlaides. Šie skripti tiek izpildīti, kad grozā tiek veiktas izmaiņas.

Rindas vienumu skripti, kas piešķir atlaidi abonementam, tiek piemēroti tikai pirmajam abonementa maksājumam. Skripts nepiešķir atlaidi turpmākajiem maksājumiem.

Dažas metodes var izmantot tikai rindas vienumu skriptos.

Piegādes skripti

Piegādes skripti mijiedarbojas ar piegādāšanu un var mainīt piegādes veidus, kā arī piešķirt atlaides piegādes likmēm. Šie skripti tiek izpildīti, kad norēķināšanās sasniedz piegādes opciju lapu.

Piegādes skripti, kas piešķir atlaidi abonementa piegādes likmei, tiek piemēroti tikai pirmajam abonementa maksājumam. Skripts nepiešķir atlaidi turpmākajiem maksājumiem.

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

Maksājumu skripti

Maksājumu skripti mijiedarbojas ar maksājumiem un var pārdēvēt un paslēpt maksājumu vārtejas, kā arī mainīt to secību. Ņem vērā, ka maksājumu skripti nemijiedarbojas ar tām maksājumu vārtejām, kuras tiek rādītas pirms norēķinu ekrāna, piemēram, Apple Pay. Šie skripti tiek izpildīti, kad norēķināšanās sasniedz maksājumu lapu.

Dažas metodes var izmantot tikai maksājumu skriptos.

Vispārīgās metodes

Tālāk norādītās metodes var izmantot jebkurā skriptu veidā:

Ievade

Skripta ievades metodes
MetodeAtgrieztais veidsApraksts
.cartCartAtgriež maināmu groza objektu.
.localevirkneAtgriež klienta lokāli. Piemēram, en, fr vai pt-BR.

Grozs

Groza objekts ir pieejams tikai tiešsaistes veikalā. Dažiem pamestiem norēķiniem ir piekļuve groza objektam. Tomēr, ja norēķināšanās ir slēgta un pēc tam klients apmeklē pamesto norēķinu, viņš tiek novirzīts uz iepriekš aizpildītu norēķināšanos, un groza objekts vairs nepastāv. Tas notiek tāpēc, ka pamesta norēķina pabeigšanas vēstule ir apgājusi skatlogu.

Skriptu metodes, kas izmanto objektu Cart
MetodeAtgrieztais veidsApraksts
.customerCustomerAtgriež groza īpašnieku (ja tāds ir).
.shipping_addressShippingAddressAtgriež groza īpašnieka piegādes adresi (ja tāda ir).
.discount_codeatšķiras Atgriež:

discount_code ir pieejams, ja grozam ir piemērota atlaide. Tas ne vienmēr nozīmē, ka groza cena mainās. Piemēram, ja atlaide tiek piemērota groziem virs 50 $, bet skripts samazina groza cenu, un tā kļūst mazāka par 50 $, discount_code joprojām ir pieejams, bet groza cena nemainās.

<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

Skriptu metodes, kas izmanto objektu CartDiscount::FixedAmount
MetodeAtgrieztais veidsApraksts
.codeVirkneAtgriež atlaides kodu, kas izmantots atlaides piemērošanai.
.amountMoneyAtgriež atlaides naudas summu.
.reject({ message: String })nilNoraida grozam piemēroto atlaides kodu. Ir jānorāda message.
.rejected?Būla vērtībaAtgriež informāciju par to, vai atlaides kods tika noraidīts.

CartDiscount::Percentage

Skriptu metodes, kas izmanto objektu CartDiscount::Percentage
MetodeAtgrieztais veidsApraksts
.codeVirkneAtgriež atlaides kodu, kas izmantots atlaides piemērošanai.
.percentageDecimālskaitlisAtgriež atlaides procentuālo apmēru.
.reject({ message: String })nilNoraida grozam piemēroto atlaides kodu. Ir jānorāda message.
.rejected?Būla vērtībaAtgriež informāciju par to, vai atlaides kods tika noraidīts.

CartDiscount::Shipping

Skriptu metodes, kas izmanto objektu CartDiscount::Shipping
MetodeAtgrieztais veidsApraksts
.codeVirkneAtgriež atlaides kodu, kas izmantots atlaides piemērošanai.
.reject({ message: String })nilNoraida grozam piemēroto atlaides kodu. Ir jānorāda message.
.rejected?Būla vērtībaAtgriež informāciju par to, vai atlaides kods tika noraidīts.

Customer

Skriptu metodes, kas izmanto objektu Customer
MetodeAtgrieztais veidsApraksts
.idVesels skaitlisAtgriež klienta ID numuru.
.emailVirkneAtgriež klienta e-pasta adresi.
.tagsList<Tag>Atgriež virkņu sarakstu, kas norāda jebkādus klientam iestatītos tagus.
.orders_countVesels skaitlisAtgriež klienta veikto pasūtījumu kopskaitu.
.total_spentMoneyAtgriež kopējo summu, ko klients ir iztērējis visos pasūtījumos.
.accepts_marketing?Būla vērtībaAtgriež informāciju par to, vai klients piekrīt saņemt mārketinga materiālus.

LineItem

Skriptu metodes, kas izmanto objektu LineItem
MetodeAtgrieztais veidsApraksts
.gramsgramiAtgriež rindas vienuma kopējo svaru.
.line_priceMoneyRindas vienuma cena.
.discounted?Būla vērtībaAtgriež informāciju par to, vai rindas vienuma cenai ir piemērota skripta vai manuāli iestatīta atlaide. Atlaides kodu izmantošana neietekmē atgriezto vērtību.
.propertieshashAtgriež rekvizītus, kas tika norādīti šim rindas vienumam.
.variantVariantAtgriež noteiktu produkta variantu, ko norāda rindas vienums.
.quantityVesels skaitlisAtgriež šī rindas vienuma daudzumu.
.selling_plan_idVesels skaitlisAtgriež rindas vienuma pārdošanas plāna ID. Šī metode ir noderīga, ja veikalā tiek pārdota abonēšana un ir nepieciešams, lai skripts noteiktu, kad produkta variants tiek pārdots kā abonements.

List

Skriptu metodes, kas izmanto objektu List
MetodeAtgrieztais veidsApraksts
.newListIzveido jaunu objektu, kas norāda sarakstu.
.[]Elements vai nil

Atgriež elementu norādītajā indeksā.

.&List

Atgriež jaunu sarakstu, kas satur abos sarakstos kopīgus elementus bez dublikātiem.

.delete_ifListIzdzēš elementus, izmantojot neobligātu koda bloku. Skati Ruby metodes delete_if dokumentāciju.
.empty?Būla vērtība

Atgriež true, ja sarakstā nav neviena elementa.

.firstElements vai nil

Atgriež pirmo elementu vai nil, ja saraksts ir tukšs.

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

Atgriež saraksta pirmā elementa indeksu. Ja argumenta vietā ir norādīts bloks, atgriež tā pirmā elementa indeksu, kuram bloka vērtība ir patiesa.

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

Atgriež saraksta pēdējā elementa indeksu. Ja argumenta vietā ir norādīts bloks, atgriež tā pirmā elementa indeksu, kuram bloka vērtība ir patiesa.

.lastElements vai nil

Atgriež pēdējo elementu vai nil, ja saraksts ir tukšs.

.lengthint

Atgriež elementu skaitu sarakstā.

.sizeint

Metodes length aizstājvārds.

.each(*args, &block)List

Izsauc bloku vienreiz katram saraksta elementam, nododot elementu kā bloka parametru.

ShippingAddress

Skriptu metodes, kas izmanto objektu ShippingAddress
MetodeAtgrieztais veidsApraksts
.namevirkneAtgriež ar piegādes adresi saistītās personas vārdu.
.address1virkneAtgriež piegādes adreses ielas adreses daļu.
.address2virkneAtgriež piegādes adreses ielas adreses daļas neobligāto papildlauku.
.phonevirkneAtgriež piegādes adreses tālruņa numuru.
.cityvirkneAtgriež piegādes adreses pilsētu.
.zipvirkneAtgriež piegādes adreses ZIP kodu.
.provincevirkneAtgriež piegādes adreses provinci/štatu.
.province_codevirkneAtgriež piegādes adreses provinces/štata saīsināto vērtību.
.country_codevirkneAtgriež piegādes adreses valsts saīsināto vērtību.

Money

Skriptu metodes, kas izmanto objektu Money
MetodeAtgrieztais veidsApraksts
.derived_from_presentment(customer_cents:X)MoneyKonvertē summu (centos) no klienta vietējās (uzrādīšanas) valūtas uz tava veikala valūtu. Šī metode pieņem parametru customer_cents, kurā var norādīt skaitli centos. Piemēram, Money.derived_from_presentment(customer_cents: 500).
.newMoneyIzveido jaunu objektu, lai attēlotu cenu.
.zeroMoney

Izveido jaunu objektu, kura cena ir nulle.

+MoneySaskaita divus Money objektus.
-MoneyAtņem vienu Money objektu no cita.
*MoneyReizina Money objektu ar skaitli.

Objekta Money piemēri

Money.new(cents: 1000)

Izveido Money objektu, kas attēlo 1000 centus jeb 10 $.

Money.new(cents: 100) * 50

Izveido Money objektu, kas attēlo 1 $, pēc tam reizina šo summu ar 50. Atgriež Money objektu, kas attēlo 50 $.

Variants

Skriptu metodes, kas izmanto objektu Variant
MetodeAtgrieztais veidsApraksts
.idVesels skaitlisAtgriež varianta ID numuru.
.priceMoneyAtgriež varianta vienības cenu.
.productProductAtgriež ar variantu saistīto produktu.
.skusList<String>Atgriež varianta noliktavas uzskaites vienības (SKU), ko bieži izmanto krājumu izsekošanai.
.titleVirkneAtgriež varianta nosaukumu.

Produkts

Skriptu metodes, kas izmanto objektu Product
MetodeAtgrieztais veidsApraksts
.idVesels skaitlisAtgriež produkta ID numuru.
.gift_card?Būla vērtībaAtgriež to, vai produkts ir dāvanu karte.
.tagsList<Tag>Atgriež virkņu sarakstu, kas attēlo šim produktam iestatītos tagus.
.product_typeVirkneKategorizācija, ar ko var tagot produktu; parasti to izmanto filtrēšanai un meklēšanai.
.vendorVirkneAtgriež šī produkta piegādātāju.

Kernel

Kernel ir Ruby modulis, kas tiek iekļauts katrā klasē. Tā rezultātā tā metodes ir pieejamas katram objektam. Šīs metodes darbojas tāpat kā globālās funkcijas citās valodās.

Skriptu metodes, kas izmanto objektu Kernel
MetodeAtgrieztais veidsApraksts
.exitnavPabeidz pašreizējā skripta izpildi bez kļūdām. Ja šī metode tiek izpildīta, pirms objektam Output.cart ir kaut kas piešķirts, skriptam nav nekādas ietekmes. Tas ir noderīgs veids, kā iziet no skriptiem, piemēram, ja klients neatbilst nosacījumiem skripta izpildei.

Kernel piemērs

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

Rindas vienumu metodes

Tālāk norādītās metodes ir izmantojamas tikai rindas vienumu skriptos:

Grozs

Skriptu metodes, kas izmanto objektu Cart rindas vienumu skriptos
MetodeAtgrieztais veidsApraksts
.subtotal_price_wasMoneyAtgriež groza starpsummu pirms jebkādu atlaižu piemērošanas.
.subtotal_price_changed?Būla vērtībaAtgriež to, vai starpsumma ir mainījusies.

LineItem

Skriptu metodes, kas izmanto objektu LineItem rindas vienumu skriptos
MetodeAtgrieztais veidsApraksts
.change_line_price(Money new_price, { message: String }) MoneyMaina rindas vienuma cenu uz norādīto summu. Ir nepieciešams message. Vērtībai new_price ir jābūt zemākai par pašreizējo cenu.
.original_line_priceMoneyAtgriež rindas vienuma sākotnējo cenu pirms skriptu un atlaižu piemērošanas.
.line_price_wasMoneyAtgriež rindas vienuma cenu pirms izmaiņām, ko piemēroja pašreizējais skripts.
.line_price_changed?Būla vērtībaAtgriež to, vai rindas vienuma cena ir mainījusies.
.change_properties(hash new_properties, { message: String }) hashIestata jaunas rindas vienuma īpašības. Sākotnējais īpašību hash tiek saglabāts kā properties_was, un metodei nodotais īpašību hash kļūst par rindas vienuma jaunajām īpašībām.
.properties_washashAtgriež rindas vienuma sākotnējo īpašību hash pirms jebkādu izmaiņu piemērošanas.
.properties_changed?Būla vērtībaAtgriež to, vai rindas vienuma īpašības ir mainītas.
.split({ take: Integer })LineItemSadala rindas vienumu divos rindas vienumos. take norāda, kādu daudzumu atdalīt no sākotnējā rindas vienuma, lai izveidotu jauno rindas vienumu.

.split piemērs

Šis skripta piemērs sadala rindas vienumu original_line_item divos rindas vienumos. Jaunā rindas vienuma daudzums ir 1 (norādīts ar take: 1). Pēc tam skripts jaunajam rindas vienumam piemēro cenu ar atlaidi un ziņojumu "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

Variants

Skriptu metodes, kurās izmanto objektu Variant rindas vienumu skriptos
MetodeAtgrieztais veidsApraksts
.compare_at_priceMoneyAtgriež varianta salīdzināmo cenu. Atgriež nil, ja variantam nav salīdzināmās cenas.

Piegādes veidi

Tālāk norādītās metodes var izmantot piegādes skriptos:

Ievade

Skriptu metodes, kurās izmanto objektu Input piegādes skriptos
MetodeAtgrieztais veidsApraksts
.shipping_ratesShippingRateListAtgriež visu piegādes likmju sarakstu.

ShippingRateList

Skriptu metodes, kurās izmanto objektu ShippingRateList piegādes skriptos
MetodeAtgrieztais veidsApraksts
.delete_ifShippingRateListDzēs piegādes likmes, izmantojot neobligātu koda bloku. Skati Ruby delete_if metodes dokumentāciju.
.sort!ShippingRateListKārto piegādes likmes, izmantojot salīdzināšanas operatoru vai neobligātu koda bloku. Skati Ruby sort! metodes dokumentāciju.
.sort_by!ShippingRateListKārto piegādes likmes, izmantojot neobligātu koda bloku. Skati Ruby sort_by! metodes dokumentāciju.

ShippingRate

Skriptu metodes, kurās izmanto objektu ShippingRate piegādes skriptos
MetodeAtgrieztais veidsApraksts
.codeVirkneAtgriež piegādes likmes kodu.
.markupMoneyAtgriež piegādes likmes uzcenojumu, ja piemērojams.
.nameVirkneAtgriež piegādes likmes nosaukumu. To var mainīt, izmantojot change_name metodi.
.priceMoneyAtgriež piegādes likmes cenu.
.sourceVirkneAtgriež ar piegādes likmi saistīto avotu (pārvadātāju), ja tas ir atbilstošs. To nevar mainīt.
.change_name(String new_name)Virkne Maina piegādes likmes nosaukumu (maksimāli 255 rakstzīmes). Avotu nevar mainīt, dzēst vai paslēpt.
.apply_discount(Money discount, { message: String })MoneyPiemēro norādītās fiksētās summas atlaidi. Cenu nevar samazināt zem 0. Ir nepieciešams ziņojums.
.phone_required?Būla vērtībaAtgriež true, ja piegādes likmes iegūšanai ir nepieciešams tālruņa numurs, vai false, ja tālruņa numurs nav nepieciešams.

Maksāšanas metodes

Tālāk norādītās metodes var izmantot maksājumu skriptos:

Ievade

Skriptu metodes, kurās izmanto objektu Input maksājumu skriptos
MetodeAtgrieztais veidsApraksts
.payment_gatewaysPaymentGatewaysListAtgriež visu veikala maksājumu vārteju sarakstu.

PaymentGatewayList

Skriptu metodes, kurās izmanto objektu PaymentGatewayList maksājumu skriptos
MetodeAtgrieztais veidsApraksts
.delete_ifPaymentGatewayListDzēs maksājumu vārtejas, izmantojot neobligātu koda bloku. Skati Ruby delete_if metodes dokumentāciju.
.sort!PaymentGatewayListKārto maksājumu vārtejas, izmantojot salīdzināšanas operatoru vai neobligātu koda bloku. Skati Ruby sort! metodes dokumentāciju.
.sort_by!PaymentGatewayListKārto maksājumu vārtejas, izmantojot neobligātu koda bloku. Skati Ruby sort_by! metodes dokumentāciju.

PaymentGateway

MetodeAtgrieztais veidsApraksts
.nameVirkneAtgriež maksājumu vārtejas nosaukumu.
.enabled_card_brandsList<String>

Ja maksājumu vārteja atbalsta kredītkartes, atgriež veikalā pieņemto kredītkaršu veidu sarakstu. Ja vārteja neatbalsta kredītkartes, atgriež tukšu sarakstu.

.change_name(String new_name)VirkneMaina maksājumu vārtejas nosaukumu. Maksājumu vārtejām ar logotipiem nevar mainīt nosaukumu.

Piemēri

Tālāk sniegtajā rindas vienuma skripta piemērā, kad klients pasūta produktu, kas nav dāvanu karte, produkta cena tiek samazināta par 9 $. Tiek parādīta arī kopējā summa, ko klients ir iztērējis visos tava veikala apmeklējumos:

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