Aller au contenu
Exemples de Scripts

Migrating an exclude sale items script

The same intent, often the same comment in the merchant’s own file, and two completely different answers depending on how the markdown was detected. Getting the pair backwards either refuses something we support or leaks margin on every clearance line.

Reconstruit
Ce que faisait le Script

It skipped any line whose product was already marked down.

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.

Exclude sale items tag proxy (D8)

Reconstruit

Paire à risque D8. 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_PERCENTAGE = 10

Input.cart.line_items.each do |line_item|
  next if line_item.variant.product.tags.include?("sale")
  new_price = line_item.original_line_price * (1.0 - (DISCOUNT_PERCENTAGE / 100.0))
  line_item.change_line_price(new_price, message: "10% off full-price items")
end

Output.cart = Input.cart
Ce que cela devient

Reconnu comme Percentage off et reconstruit en offre de type volume. 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 typevolumetype
Countingper_productcounting
Recurrenceoncerecurrence
Tier 1min qty 1 -> 10% offtiers[0]
Target scopealltarget.scope
Target excludessaletarget.excludeIds
MethodautomaticdiscountMethod
Allocationstandardstacking.allocation
Combines with other discountsnostacking
Il vous sera demandé de confirmer
  • Your Script limited this to a tag, vendor, or product type. We carried that filter over, so confirm it selects the products you expect.
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.

  • Targeting excludes sale. No Meridian Goods product carries those, so every product stays eligible and the exclusion is proved by the campaign settings, not by the cart.
Le panier qui déclenche cette offre, et ce qu'elle coûte
ArticleQtéPrix unitaire
Braided USB-C Cable1$14.00
Sous-total$14.00
Remise-$1.40
Total$12.60

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 1 de Braided USB-C Cable à $14.00 et la réponse est fixée.

La remise est de $1.40. Le total payé par l'acheteur est de $12.60.

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 Ceramic Travel Mug
Le panier qui ne doit pas déclencher cette offre
ArticleQtéPrix unitaire
Ceramic Travel Mug1$22.00
Sous-total$22.00
Total$22.00

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

Exclude sale items compare at (D8)

Pas encore géré

Paire à risque D8. 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_PERCENTAGE = 10

Input.cart.line_items.each do |line_item|
  next if line_item.variant.compare_at_price && line_item.variant.compare_at_price > line_item.variant.price
  new_price = line_item.original_line_price * (1.0 - (DISCOUNT_PERCENTAGE / 100.0))
  line_item.change_line_price(new_price, message: "10% off full-price items")
end

Output.cart = Input.cart
Ce qu'il advient de celui-ci

We have not built this yet

Your Script skipped items that were already marked down. Shopify does give us the sale price, but our checkout query is already at Shopify's cost limit, so we cannot ask for it today. Exclude those products by hand and we can rebuild the rest.

C'est notre lacune, pas celle de Shopify. Shopify l'autorise et nous ne l'avons pas construit, il n'y a donc rien à lier ici ni rien à reprocher à la plateforme.

Clé du motif : unsupported.compareAtExclusion

Il n'y a pas de panier à tester ici, puisque rien n'est construit. Coller ceci produit le message ci-dessus et aucune campagne.

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 D8

Exclude sale items tag proxy (D8)

Reconstruit

Reconstruit en offre volume.

Remise sur son propre panier : $1.40

Les lignes qui changent
  next if line_item.variant.product.tags.include?("sale")
Lire Exclude sale items

Exclude sale items compare at (D8)

Pas encore géré

Non reconstruit. We have not built this yet

Les lignes qui changent
  next if line_item.variant.compare_at_price && line_item.variant.compare_at_price > line_item.variant.price
Lire Exclude sale items

Questions fréquentes

Will Stackable rebuild this script?
It depends on how yours is written. 1 of the 2 spellings on this page are rebuilt today; the rest are refused with a reason. Compare your file against the Ruby above.
What cart proves it works?
1 x Braided USB-C Cable at $14.00. The engine takes $1.40 off, and checkout charges $12.60.
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.
What happens to the part you cannot rebuild?
We have not built this yet. Your Script skipped items that were already marked down. Shopify does give us the sale price, but our checkout query is already at Shopify's cost limit, so we cannot ask for it today. Exclude those products by hand and we can rebuild the rest.

Formes de Script apparentées

Scoped to a tag or vendor

A discount limited to products carrying one tag, vendor or type.

Exclude gift cards

Gift cards left out of a discount that would otherwise have hit them.

Line item property

A discount keyed on a property attached to one cart line.

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.