Hoppa till innehåll
Script-exempel

Migrating a script that took an amount off each item

Written four different ways in the wild, and two of them differ only in whether the number in the file already meant cents. Reading a generator’s "5" as five cents is a hundredfold error, so all four spellings are shown side by side.

Ombyggt
Vad detta Script gjorde

It subtracted a fixed sum from every matching unit in the cart.

Handlare har skrivit det här på 4 olika sätt, och de betyder inte alla samma sak. Varje variant finns nedan med en egen varukorg och egna siffror.

Testa det i din egen butik

Klistra in det i Scripts-räddning och se vad som byggs

  1. Kopiera Ruby-koden med knappen bredvid vilket Script som helst på sidan.
  2. Öppna Stackable i Shopify-adminen, sedan Verktyg, sedan Scripts-räddning.
  3. Klistra in det där, läs vad verktyget säger att det ska bygga och jämför med inställningarna på den här sidan.

Scripts-räddning ingår i Pro-planen. Ingenting publiceras förrän du anger vad ditt gamla Script gav i rabatt och båda beloppen stämmer på öret.

Amount off per unit (D1)

Ombyggt

Riskabelt par D1. Den här filen och dess motpart ser nästan likadana ut och beter sig olika, så läs båda innan du avgör vilken du har.

Den ursprungliga Ruby-koden

DISCOUNT = Money.new(cents: 999)

Input.cart.line_items.each do |line_item|
  next unless line_item.variant.product.product_type == "Clearance"
  new_price = line_item.line_price - (DISCOUNT * line_item.quantity)
  line_item.change_line_price(new_price, message: "$9.99 off each")
end

Output.cart = Input.cart
Vad det blir

Identifierat som Amount off at a quantity och ombyggt till ett erbjudande av typen volume. Det här är de verkliga konfigurationsnycklarna som erbjudandet sparas med, så du kan stämma av din egen ombyggnad fält för fält.

Varje inställning, utskriven
InställningVärdeKonfigurationsnyckel
Offer typevolumetype
Countingper_productcounting
Recurrenceoncerecurrence
Tier 1min qty 1 -> $9.99 off eachtiers[0]
Target scopeproduct_typestarget.scope
Target includesClearancetarget.includeIds
MethodautomaticdiscountMethod
Allocationstandardstacking.allocation
Combines with other discountsnostacking
Du kommer att få bekräfta
  • Your Script limited this to a tag, vendor, or product type. We carried that filter over, so confirm it selects the products you expect.
Varukorgen som bevisar det

Byggd i vår publika demobutik, Meridian Goods, så att varje pris här går att räkna efter i stället för att tas på förtroende. Rabatten nedan är vad samma motor som kör i kassan räknar fram för exakt den här varukorgen.

  • No Meridian Goods product carries the type Clearance. Set it on Aria Wireless Earbuds in Shopify before you build the cart, and on nothing else.
Varukorgen som utlöser erbjudandet, och vad det kostar
ArtikelAntalStyckpris
Aria Wireless Earbuds1$79.00
Delsumma$79.00
Rabatt-$9.99
Summa$69.01

Utloggad, eller inloggad som kund utan taggar.

Beloppet som verktyget stämmer av dig mot

Före publicering frågar verktyget vad ditt gamla Script gjorde med en varukorg du redan har. Sätt den till 1 av Aria Wireless Earbuds à $79.00, så är svaret givet.

Rabatten är $9.99. Summan som kunden betalade är $69.01.

Jämförelsen är exakt, ned till minsta enhet i din valuta. Ett öre fel och publiceringen förblir stängd, vilket är hela poängen med steget.

Varukorgen som inte får ge något alls
  • swap the cart for a single Braided USB-C Cable
Varukorgen som inte får utlösa erbjudandet
ArtikelAntalStyckpris
Braided USB-C Cable1$14.00
Delsumma$14.00
Summa$14.00

Utloggad, eller inloggad som kund utan taggar.

Amount off per unit (D7)

Ombyggt

Riskabelt par D7. Den här filen och dess motpart ser nästan likadana ut och beter sig olika, så läs båda innan du avgör vilken du har.

Den ursprungliga Ruby-koden

# GENERATED BY THE SHOPIFY SCRIPT CREATOR APP

class FixedItemDiscount
  def initialize(amount, message)
    @amount = Money.new(cents: 100) * amount
    @message = message
  end

  def apply(line_item)
    per_item_discount = @amount
    discount_to_apply = [(per_item_discount * line_item.quantity), line_item.line_price].min
    line_item.change_line_price([line_item.line_price - discount_to_apply, Money.zero].max, message: @message)
  end
end

CAMPAIGNS = [
  ConditionalDiscount.new(:all, nil, nil, nil, FixedItemDiscount.new(5, "$5 off each"), 0),
].freeze

CAMPAIGNS.each do |campaign|
  campaign.run(Input.cart)
end

Output.cart = Input.cart
Vad det blir

Identifierat som Amount off at a quantity och ombyggt till ett erbjudande av typen volume. Det här är de verkliga konfigurationsnycklarna som erbjudandet sparas med, så du kan stämma av din egen ombyggnad fält för fält.

Varje inställning, utskriven
InställningVärdeKonfigurationsnyckel
Offer typevolumetype
Countingper_productcounting
Recurrenceoncerecurrence
Tier 1min qty 1 -> $5.00 off eachtiers[0]
Target scopealltarget.scope
MethodautomaticdiscountMethod
Allocationstandardstacking.allocation
Combines with other discountsnostacking
Du kommer att få bekräfta
  • Confirm which products this applies to. We could not read product targeting from the script.
Varukorgen som bevisar det

Byggd i vår publika demobutik, Meridian Goods, så att varje pris här går att räkna efter i stället för att tas på förtroende. Rabatten nedan är vad samma motor som kör i kassan räknar fram för exakt den här varukorgen.

Varukorgen som utlöser erbjudandet, och vad det kostar
ArtikelAntalStyckpris
Braided USB-C Cable1$14.00
Delsumma$14.00
Rabatt-$5.00
Summa$9.00

Utloggad, eller inloggad som kund utan taggar.

Beloppet som verktyget stämmer av dig mot

Före publicering frågar verktyget vad ditt gamla Script gjorde med en varukorg du redan har. Sätt den till 1 av Braided USB-C Cable à $14.00, så är svaret givet.

Rabatten är $5.00. Summan som kunden betalade är $9.00.

Jämförelsen är exakt, ned till minsta enhet i din valuta. Ett öre fel och publiceringen förblir stängd, vilket är hela poängen med steget.

Varukorgen som inte får ge något alls

This rule carries no condition at all, so it fires on any cart holding anything and there is no quiet cart to build. The negative check is an empty cart, which the app runs for you. That is correct behaviour, not a failure.

Amount off per unit dollars (D11)

Ombyggt

Riskabelt par D11. Den här filen och dess motpart ser nästan likadana ut och beter sig olika, så läs båda innan du avgör vilken du har.

Den ursprungliga Ruby-koden

# GENERATED BY THE SHOPIFY SCRIPT CREATOR APP

class FixedItemDiscount
  def initialize(amount, message)
    @amount = Money.new(cents: 100) * amount
    @message = message
  end

  def apply(line_item)
    discount_to_apply = [(@amount * line_item.quantity), line_item.line_price].min
    line_item.change_line_price([line_item.line_price - discount_to_apply, Money.zero].max, message: @message)
  end
end

CAMPAIGNS = [
  ConditionalDiscount.new(:all, nil, nil, nil, FixedItemDiscount.new(5, "$5 off each"), 0),
].freeze

CAMPAIGNS.each do |campaign|
  campaign.run(Input.cart)
end

Output.cart = Input.cart
Vad det blir

Identifierat som Amount off at a quantity och ombyggt till ett erbjudande av typen volume. Det här är de verkliga konfigurationsnycklarna som erbjudandet sparas med, så du kan stämma av din egen ombyggnad fält för fält.

Varje inställning, utskriven
InställningVärdeKonfigurationsnyckel
Offer typevolumetype
Countingper_productcounting
Recurrenceoncerecurrence
Tier 1min qty 1 -> $5.00 off eachtiers[0]
Target scopealltarget.scope
MethodautomaticdiscountMethod
Allocationstandardstacking.allocation
Combines with other discountsnostacking
Du kommer att få bekräfta
  • Confirm which products this applies to. We could not read product targeting from the script.
Varukorgen som bevisar det

Byggd i vår publika demobutik, Meridian Goods, så att varje pris här går att räkna efter i stället för att tas på förtroende. Rabatten nedan är vad samma motor som kör i kassan räknar fram för exakt den här varukorgen.

Varukorgen som utlöser erbjudandet, och vad det kostar
ArtikelAntalStyckpris
Braided USB-C Cable1$14.00
Delsumma$14.00
Rabatt-$5.00
Summa$9.00

Utloggad, eller inloggad som kund utan taggar.

Beloppet som verktyget stämmer av dig mot

Före publicering frågar verktyget vad ditt gamla Script gjorde med en varukorg du redan har. Sätt den till 1 av Braided USB-C Cable à $14.00, så är svaret givet.

Rabatten är $5.00. Summan som kunden betalade är $9.00.

Jämförelsen är exakt, ned till minsta enhet i din valuta. Ett öre fel och publiceringen förblir stängd, vilket är hela poängen med steget.

Varukorgen som inte får ge något alls

This rule carries no condition at all, so it fires on any cart holding anything and there is no quiet cart to build. The negative check is an empty cart, which the app runs for you. That is correct behaviour, not a failure.

Amount off per unit cents (D11)

Ombyggt

Riskabelt par D11. Den här filen och dess motpart ser nästan likadana ut och beter sig olika, så läs båda innan du avgör vilken du har.

Den ursprungliga Ruby-koden

DISCOUNT = Money.new(cents: 500)

Input.cart.line_items.each do |line_item|
  discount_to_apply = [(DISCOUNT * line_item.quantity), line_item.line_price].min
  line_item.change_line_price([line_item.line_price - discount_to_apply, Money.zero].max, message: "$5 off each")
end

Output.cart = Input.cart
Vad det blir

Identifierat som Amount off at a quantity och ombyggt till ett erbjudande av typen volume. Det här är de verkliga konfigurationsnycklarna som erbjudandet sparas med, så du kan stämma av din egen ombyggnad fält för fält.

Varje inställning, utskriven
InställningVärdeKonfigurationsnyckel
Offer typevolumetype
Countingper_productcounting
Recurrenceoncerecurrence
Tier 1min qty 1 -> $5.00 off eachtiers[0]
Target scopealltarget.scope
MethodautomaticdiscountMethod
Allocationstandardstacking.allocation
Combines with other discountsnostacking
Du kommer att få bekräfta
  • Confirm which products this applies to. We could not read product targeting from the script.
Varukorgen som bevisar det

Byggd i vår publika demobutik, Meridian Goods, så att varje pris här går att räkna efter i stället för att tas på förtroende. Rabatten nedan är vad samma motor som kör i kassan räknar fram för exakt den här varukorgen.

Varukorgen som utlöser erbjudandet, och vad det kostar
ArtikelAntalStyckpris
Braided USB-C Cable1$14.00
Delsumma$14.00
Rabatt-$5.00
Summa$9.00

Utloggad, eller inloggad som kund utan taggar.

Beloppet som verktyget stämmer av dig mot

Före publicering frågar verktyget vad ditt gamla Script gjorde med en varukorg du redan har. Sätt den till 1 av Braided USB-C Cable à $14.00, så är svaret givet.

Rabatten är $5.00. Summan som kunden betalade är $9.00.

Jämförelsen är exakt, ned till minsta enhet i din valuta. Ett öre fel och publiceringen förblir stängd, vilket är hela poängen med steget.

Varukorgen som inte får ge något alls

This rule carries no condition at all, so it fires on any cart holding anything and there is no quiet cart to build. The negative check is an empty cart, which the app runs for you. That is correct behaviour, not a failure.

Två filer som ser likadana ut

Varje par nedan är samma Script-form skriven på två sätt. De skiljer sig åt på en eller två rader och gör olika saker, så läs båda innan du avgör vilken du har.

Farligt par D1

Amount off per unit (D1)

Ombyggt

Byggs om till ett volume-erbjudande.

Rabatt i sin egen varukorg: $9.99

Rader som skiljer sig
DISCOUNT = Money.new(cents: 999)
  new_price = line_item.line_price - (DISCOUNT * line_item.quantity)
  line_item.change_line_price(new_price, message: "$9.99 off each")
Läs Amount off each item

Fixed price per unit (D1)

Ombyggt

Byggs om till ett volume-erbjudande.

Rabatt i sin egen varukorg: $69.01

Rader som skiljer sig
FIXED_PRICE = Money.new(cents: 999)
  line_item.change_line_price(FIXED_PRICE * line_item.quantity, message: "Clearance $9.99 each")
Läs Fixed price per item

Farligt par D7

Amount off per unit (D7)

Ombyggt

Byggs om till ett volume-erbjudande.

Rabatt i sin egen varukorg: $5.00

Rader som skiljer sig
class FixedItemDiscount
  def initialize(amount, message)
    per_item_discount = @amount
    discount_to_apply = [(per_item_discount * line_item.quantity), line_item.line_price].min
    line_item.change_line_price([line_item.line_price - discount_to_apply, Money.zero].max, message: @message)
  ConditionalDiscount.new(:all, nil, nil, nil, FixedItemDiscount.new(5, "$5 off each"), 0),
Läs Amount off each item

Fixed total discount cart (D7)

Ombyggt

Byggs om till ett spend_goal-erbjudande.

Rabatt i sin egen varukorg: $5.00

Rader som skiljer sig
class FixedTotalDiscount
  def initialize(amount, message, behaviour = :split)
    @discount_applied = Money.zero
    @behaviour = behaviour
    return unless @discount_applied < @amount
    discount_to_apply = [(@amount - @discount_applied), line_item.line_price].min

Och 3 rader till som skiljer sig, på den egna sidan.

Läs Amount off the order

Farligt par D11

Amount off per unit dollars (D11)

Ombyggt

Byggs om till ett volume-erbjudande.

Rabatt i sin egen varukorg: $5.00

Rader som skiljer sig
# GENERATED BY THE SHOPIFY SCRIPT CREATOR APP
class FixedItemDiscount
  def initialize(amount, message)
    @amount = Money.new(cents: 100) * amount
    @message = message
  end

Och 10 rader till som skiljer sig, på den egna sidan.

Läs Amount off each item

Amount off per unit cents (D11)

Ombyggt

Byggs om till ett volume-erbjudande.

Rabatt i sin egen varukorg: $5.00

Rader som skiljer sig
DISCOUNT = Money.new(cents: 500)
Input.cart.line_items.each do |line_item|
  discount_to_apply = [(DISCOUNT * line_item.quantity), line_item.line_price].min
  line_item.change_line_price([line_item.line_price - discount_to_apply, Money.zero].max, message: "$5 off each")
Läs Amount off each item

Vanliga frågor

Will Stackable rebuild this script?
Yes. Every spelling on this page is rebuilt today as a volume offer, and the cart above is the one that proves it.
What cart proves it works?
1 x Aria Wireless Earbuds at $79.00. The engine takes $9.99 off, and checkout charges $69.01.
What will I have to check before publishing?
Your Script limited this to a tag, vendor, or product type. We carried that filter over, so confirm it selects the products you expect. Confirm which products this applies to. We could not read product targeting from the script.

Besläktade Script-former

Fixed price per item

Everything in the clearance line repriced to one round number per unit.

Amount off the order

One lump sum off the whole cart, spread across the lines.

Sitewide percentage off

One percentage off the whole catalogue, with no condition attached.

Klistra in ditt Script och se det byggas om

Ombyggnaden stäms av mot beloppet som ditt gamla Script tog ut innan du kan publicera den.

Vi använder nödvändiga cookies för att driva den här webbplatsen, och, bara med ditt tillstånd, analyscookies för att förstå trafiken. Läs vår Cookiepolicy.