Hoppa till innehåll
Script-exempel

Migrating a fixed amount off the order script

Its per-item twin has the same constructor, the same literal and the same message string. On a ten-item cart one gives away $5 and the other gives away $50, so the pair is shown together deliberately.

Ombyggt
Vad detta Script gjorde

It reduced the cart total by one fixed sum, spread across the lines.

Handlare har skrivit det här på 2 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.

Fixed total discount cart (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 FixedTotalDiscount
  def initialize(amount, message, behaviour = :split)
    @amount = Money.new(cents: 100) * amount
    @message = message
    @discount_applied = Money.zero
    @behaviour = behaviour
  end

  def apply(line_item)
    return unless @discount_applied < @amount
    discount_to_apply = [(@amount - @discount_applied), line_item.line_price].min
    line_item.change_line_price(line_item.line_price - discount_to_apply, message: @message)
    @discount_applied += discount_to_apply
  end
end

CAMPAIGNS = [
  ConditionalDiscount.new(:all, nil, nil, nil, FixedTotalDiscount.new(5, "$5 off your order"), 0),
].freeze

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

Output.cart = Input.cart
Vad det blir

Identifierat som Amount off the order och ombyggt till ett erbjudande av typen spend_goal. 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 typespend_goaltype
Countingper_cartcounting
Recurrenceoncerecurrence
Tier 1min spend $0.00 -> $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.
Du kommer att få veta
  • A fixed amount off the order is spread across the items at checkout, so each line shows part of it rather than one line carrying the whole discount.
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.

Fixed total discount cart (D10)

Ombyggt

Riskabelt par D10. 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

MAX_DISCOUNT = Money.new(cents: 10000)

remaining = MAX_DISCOUNT

Input.cart.line_items.each do |line_item|
  break if remaining <= Money.zero
  share = [line_item.line_price, remaining].min
  line_item.change_line_price(line_item.line_price - share, message: "$100 off your order")
  remaining = remaining - share
end

Output.cart = Input.cart
Vad det blir

Identifierat som Amount off the order och ombyggt till ett erbjudande av typen spend_goal. 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 typespend_goaltype
Countingper_cartcounting
Recurrenceoncerecurrence
Tier 1min spend $0.00 -> $100.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.
Du kommer att få veta
  • A fixed amount off the order is spread across the items at checkout, so each line shows part of it rather than one line carrying the whole discount.
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-$14.00
Summa$0.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 $14.00. Summan som kunden betalade är $0.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 D7

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

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

Farligt par D10

Fixed total discount cart (D10)

Ombyggt

Byggs om till ett spend_goal-erbjudande.

Rabatt i sin egen varukorg: $14.00

Rader som skiljer sig
MAX_DISCOUNT = Money.new(cents: 10000)
remaining = MAX_DISCOUNT
  break if remaining <= Money.zero
  share = [line_item.line_price, remaining].min
  line_item.change_line_price(line_item.line_price - share, message: "$100 off your order")
  remaining = remaining - share
Läs Amount off the order

Capped percentage discount (D10)

Ombyggt

Byggs om till ett spend_goal-erbjudande.

Rabatt i sin egen varukorg: $50.00

Rader som skiljer sig
DISCOUNT_PERCENTAGE = 25
MAX_DISCOUNT = 50
cart_subtotal_float = Float((Input.cart.subtotal_price.cents / 100).to_s)
raw_discount = cart_subtotal_float * (DISCOUNT_PERCENTAGE / 100.0)
total_discount = [raw_discount, MAX_DISCOUNT].min
  line_price_float = Float((line_item.line_price.cents / 100).to_s)

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

Läs Capped percentage discount

Vanliga frågor

Will Stackable rebuild this script?
Yes. Every spelling on this page is rebuilt today as a spend_goal offer, and the cart above is the one that proves it.
What cart proves it works?
1 x Braided USB-C Cable at $14.00. The engine takes $5.00 off, and checkout charges $9.00.
What will I have to check before publishing?
Confirm which products this applies to. We could not read product targeting from the script. A fixed amount off the order is spread across the items at checkout, so each line shows part of it rather than one line carrying the whole discount.

Besläktade Script-former

Amount off each item

A flat sum taken off every unit, however many the shopper bought.

Capped percentage discount

A percentage with a ceiling on it, so a large cart never gave away more than a set maximum.

Fixed price per item

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

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.