Aller au contenu
Exemples de Scripts

Migrating a percentage off the cheapest item script

Shopify shipped this one in the picker, so it is widely copied, and almost every copy carries the same gate: more than one cart LINE. Two of the same item on one line is two units and one line, and the original stayed silent on it.

Reconstruit
Ce que faisait le Script

It found the cheapest line in the cart and took a percentage off one unit of it.

Les marchands ont écrit ceci de 2 façons différentes, et elles ne veulent pas toutes dire la même chose. Chaque variante figure ci-dessous avec son propre panier et ses propres chiffres.

Essayez-le sur votre propre boutique

Collez-le dans Sauvetage des Scripts et regardez ce qu'il reconstruit

  1. Copiez le Ruby avec le bouton placé à côté de chaque Script de cette page.
  2. Dans votre interface Shopify, ouvrez Stackable, puis Outils, puis Sauvetage des Scripts.
  3. Collez-le, lisez ce que l'outil annonce qu'il va construire et comparez-le aux réglages de cette page.

Sauvetage des Scripts fait partie du forfait Pro. Rien n'est publié tant que vous n'avez pas indiqué la remise de votre ancien Script et que les deux chiffres ne correspondent pas au centime près.

Cheapest item percentage line count (D15)

Reconstruit

Paire à risque D15. Ce fichier et son jumeau se ressemblent presque à l'identique et se comportent différemment, alors lisez les deux avant de décider lequel vous avez.

Le Ruby d'origine

DISCOUNT_AMOUNT = 50

if (Input.cart.line_items.size > 1)
  line_item = Input.cart.line_items.sort_by { |line_item| line_item.variant.price }.first
  if line_item.quantity > 1
    line_item = line_item.split(take: 1)
    Input.cart.line_items << line_item
  end
  line_item.change_line_price(
    line_item.line_price * (1.0 - (DISCOUNT_AMOUNT / 100.0)),
    message: "50% off your least expensive item"
  )
end

Output.cart = Input.cart
Ce que cela devient

Reconnu comme Cheapest item discounted et reconstruit en offre de type bxgy. Voici les vraies clés de configuration avec lesquelles l'offre est enregistrée, pour que vous puissiez comparer votre propre reconstruction champ par champ.

Chaque réglage, en détail
RéglageValeurClé de configuration
Offer typebxgytype
Countingper_groupcounting
Recurrenceoncerecurrence
Tier 1min qty 2 -> free itemtiers[0]
Buy quantity2bxgy.buyQty
Get quantity1bxgy.getQty
Get selectioncheapest_eligiblebxgy.getSelection
Reward on the get units50% offbxgy.getDiscountPct
Free units are additionalfalsebxgy.freeUnitsAreAdditional
Target scopealltarget.scope
MethodautomaticdiscountMethod
Allocationstandardstacking.allocation
Combines with other discountsnostacking
Il vous sera demandé de confirmer
  • Your Script counted separate cart lines. We count units, so one line holding two items now qualifies where it did not before. Confirm the buy requirement.
  • Confirm which products this applies to. We could not read product targeting from the script.
Vous serez informé
  • Your Script needed two separate cart lines. This offer counts units, so two of the same item on one line now qualifies.
Le panier qui le prouve

Construit sur notre boutique de démonstration publique, Meridian Goods, pour que chaque prix ici puisse être reproduit plutôt que cru sur parole. La remise ci-dessous est ce que le moteur qui tourne au paiement calcule pour ce panier précis.

Le panier qui déclenche cette offre, et ce qu'elle coûte
ArticleQtéPrix unitaire
Softcover Notebook Set1$18.00
Braided USB-C Cable1$14.00
Sous-total$32.00
Remise-$7.00
Total$25.00

Déconnecté, ou connecté en tant que client sans tag.

Le chiffre auquel l'outil vous compare

Avant la publication, l'outil demande ce que votre ancien Script faisait à un panier que vous avez déjà. Réglez-le sur 2 de Braided USB-C Cable à $14.00 et la réponse est fixée.

La remise est de $7.00. Le total payé par l'acheteur est de $21.00.

La comparaison est exacte, jusqu'à la plus petite unité de votre devise. Un centime d'écart et la publication reste bloquée, ce qui est tout l'intérêt de l'étape.

Le panier qui ne doit rien produire
  • swap the cart for a single Braided USB-C Cable
Le panier qui ne doit pas déclencher cette offre
ArticleQtéPrix unitaire
Braided USB-C Cable1$14.00
Sous-total$14.00
Total$14.00

Déconnecté, ou connecté en tant que client sans tag.

Cheapest item percentage unit count (D15)

Reconstruit

Paire à risque D15. Ce fichier et son jumeau se ressemblent presque à l'identique et se comportent différemment, alors lisez les deux avant de décider lequel vous avez.

Le Ruby d'origine

DISCOUNT_AMOUNT = 50

total_units = Input.cart.line_items.map(&:quantity).reduce(0, :+)

if total_units >= 2
  line_item = Input.cart.line_items.sort_by { |li| li.variant.price }.first
  if line_item.quantity > 1
    line_item = line_item.split(take: 1)
    Input.cart.line_items << line_item
  end
  line_item.change_line_price(
    line_item.line_price * (1.0 - (DISCOUNT_AMOUNT / 100.0)),
    message: "50% off your least expensive item"
  )
end

Output.cart = Input.cart
Ce que cela devient

Reconnu comme Cheapest item discounted et reconstruit en offre de type bxgy. Voici les vraies clés de configuration avec lesquelles l'offre est enregistrée, pour que vous puissiez comparer votre propre reconstruction champ par champ.

Chaque réglage, en détail
RéglageValeurClé de configuration
Offer typebxgytype
Countingper_groupcounting
Recurrenceoncerecurrence
Tier 1min qty 2 -> free itemtiers[0]
Buy quantity2bxgy.buyQty
Get quantity1bxgy.getQty
Get selectioncheapest_eligiblebxgy.getSelection
Reward on the get units50% offbxgy.getDiscountPct
Free units are additionalfalsebxgy.freeUnitsAreAdditional
Target scopealltarget.scope
MethodautomaticdiscountMethod
Allocationstandardstacking.allocation
Combines with other discountsnostacking
Il vous sera demandé de confirmer
  • Confirm which products this applies to. We could not read product targeting from the script.
Le panier qui le prouve

Construit sur notre boutique de démonstration publique, Meridian Goods, pour que chaque prix ici puisse être reproduit plutôt que cru sur parole. La remise ci-dessous est ce que le moteur qui tourne au paiement calcule pour ce panier précis.

Le panier qui déclenche cette offre, et ce qu'elle coûte
ArticleQtéPrix unitaire
Softcover Notebook Set1$18.00
Braided USB-C Cable1$14.00
Sous-total$32.00
Remise-$7.00
Total$25.00

Déconnecté, ou connecté en tant que client sans tag.

Le chiffre auquel l'outil vous compare

Avant la publication, l'outil demande ce que votre ancien Script faisait à un panier que vous avez déjà. Réglez-le sur 2 de Braided USB-C Cable à $14.00 et la réponse est fixée.

La remise est de $7.00. Le total payé par l'acheteur est de $21.00.

La comparaison est exacte, jusqu'à la plus petite unité de votre devise. Un centime d'écart et la publication reste bloquée, ce qui est tout l'intérêt de l'étape.

Le panier qui ne doit rien produire
  • swap the cart for a single Braided USB-C Cable
Le panier qui ne doit pas déclencher cette offre
ArticleQtéPrix unitaire
Braided USB-C Cable1$14.00
Sous-total$14.00
Total$14.00

Déconnecté, ou connecté en tant que client sans tag.

Deux fichiers qui se ressemblent

Chaque paire ci-dessous est une même forme de Script écrite de deux façons. Une ou deux lignes les séparent et elles ne font pas la même chose, alors lisez les deux avant de décider laquelle vous avez.

Paire piégeuse D15

Cheapest item percentage line count (D15)

Reconstruit

Reconstruit en offre bxgy.

Remise sur son propre panier : $7.00

Les lignes qui changent
if (Input.cart.line_items.size > 1)
  line_item = Input.cart.line_items.sort_by { |line_item| line_item.variant.price }.first
Lire Percentage off the cheapest item

Cheapest item percentage unit count (D15)

Reconstruit

Reconstruit en offre bxgy.

Remise sur son propre panier : $7.00

Les lignes qui changent
total_units = Input.cart.line_items.map(&:quantity).reduce(0, :+)
if total_units >= 2
  line_item = Input.cart.line_items.sort_by { |li| li.variant.price }.first
Lire Percentage off the cheapest item

Questions fréquentes

Will Stackable rebuild this script?
Yes. Every spelling on this page is rebuilt today as a bxgy offer, and the cart above is the one that proves it.
What cart proves it works?
1 x Softcover Notebook Set at $18.00 plus 1 x Braided USB-C Cable at $14.00. The engine takes $7.00 off, and checkout charges $25.00.
What will I have to check before publishing?
Your Script counted separate cart lines. We count units, so one line holding two items now qualifies where it did not before. Confirm the buy requirement. Confirm which products this applies to. We could not read product targeting from the script. Your Script needed two separate cart lines. This offer counts units, so two of the same item on one line now qualifies.

Formes de Script apparentées

Buy one get one free

A set of paid units earns an extra unit at no charge.

Buy X get Y, inclusive

The same buy-and-get offer, counted so the reward sits inside each set rather than beside it.

Limit the discounted units

The discount applied to the first few units only, with the rest at full price.

Collez votre Script et voyez sa reconstruction

La reconstruction est comparée au montant que facturait votre ancien Script avant que vous puissiez la publier.

Nous utilisons des cookies essentiels pour faire fonctionner ce site et, uniquement avec votre autorisation, des cookies d'analyse pour comprendre le trafic. Consultez notre Politique de cookies.