行项脚本示例

行项目脚本影响购物车中的项目,并可以更改其属性和价格。这些脚本在每次更改购物车属性时运行,例如添加或删除商品、更改送货地址或添加折扣代码。

要使用此页面上的模板,请使用空白模板创建一个新脚本。

步骤:

  1. 从您的Shopify管理,到应用程序>脚本编辑器
  2. 点击创建脚本
  3. 点击行项目
  4. 选择空白模板,然后点击创建脚本
  5. Ruby源代码节,删除默认的代码行:<代码>输出。车=输入.车
  6. 从此页复制一个脚本并将其粘贴到Ruby源代码部分。
  7. 编辑可定制的设置部分,以便在您的商店中发挥作用。
  8. 测试你的脚本。更多信息请参考测试和调试Shopify脚本
  9. 后测试:
    • 点击保存草稿保存未发表的脚本草稿,或者
    • 点击保存并发布创建并发布脚本。

按消费分层推车折扣

使用此脚本提供美元金额折扣,该折扣根据购物车中商品的总价值增加。这个折扣尽可能均匀地分布在购物车中的各个项目上。

例如,如果顾客消费超过150美元,就给他们25美元的折扣,如果消费超过300美元,就给他们50美元的折扣,如果消费超过400美元,就给他们75美元的折扣。

# ================================ 可定制的设置  ================================# ================================================================按消费阈值分层购物车折扣##如果购物车总数大于(或等于)输入的# threshold,关联的折扣应用到购物车。的# discount将尽可能均匀地分布在所有物品上。## -“threshold”是获得资格所需的消费金额# - 'discount_amount'是应用于商品的美元折扣#车# - 'discount_message'是折扣时显示的消息#被应用# ================================================================SPENDING_THRESHOLDS=阈值:150discount_amount:25discount_message:“消费150美元可享25美元优惠!”},阈值:300discount_amount:50discount_message:“消费300美元,可享50美元优惠!”},阈值:400discount_amount:75discount_message:“消费400美元可享75美元优惠!”},# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# DollarDiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DollarDiscountApplicatordef初始化discount_message@discount_message=discount_message结束def应用line_itemdiscount_amountnew_line_price=line_itemline_price-discount_amountline_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# TieredCartDiscountBySpendCampaign##如果购物车总数大于(或等于)输入的# threshold,关联的折扣应用到购物车。的# discount将尽可能均匀地分布在所有物品上。# ================================================================TieredCartDiscountBySpendCampaigndef初始化@tiers=sort_by||:阈值}。反向结束def运行applicable_tier=@tiers找到||subtotal_price>=分:One hundred.:阈值])}返回如果applicable_tiernil ?discount_applicator=DollarDiscountApplicatorapplicable_tier: discount_message])discount_amount=applicable_tier: discount_amount项目=line_itemssort_by|line_item|line_item变体价格}自我loop_items项目discount_amountdiscount_applicator结束defloop_itemsline_itemsdiscount_amountdiscount_applicatoravg_discount=discount_amountto_f1/line_items地图&数量:).减少0+)))。2avg_discount=分:One hundred.avg_discountdiscount_amount=分:One hundred.discount_amountline_itemseach_with_index|line_item指数|打破如果discount_amount< =line_discount=avg_discountline_item数量如果discount_amount<line_discount||指数= =line_items大小-1discount_update=line_itemline_price>discount_amountdiscount_amountline_itemline_price其他的discount_update=line_itemline_price>line_discountline_discountline_itemline_price结束discount_amount- =discount_updatediscount_applicator应用line_itemdiscount_update结束结束结束活动=TieredCartDiscountBySpendCampaignSPENDING_THRESHOLDS),活动每一个|运动|运动运行输入结束输出=输入

按消费分级折扣

使用此脚本提供百分比折扣,折扣根据购物车中商品的总价值增加。

例如,如果顾客消费30美元或以上,就给他们10%的折扣,如果消费50美元或以上,就给他们15%的折扣,如果消费100美元或以上,就给他们20%的折扣。

# ================================ 可定制的设置  ================================# ================================================================#按消费门槛分层折扣##如果购物车总数大于(或等于)输入的# threshold,关联的折扣应用于每个项目。## -“threshold”是获得资格所需的消费金额# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用# ================================================================SPENDING_THRESHOLDS=阈值:30.discount_type:百分比discount_amount:10discount_message:“花30美元,打9折!”},阈值:50discount_type:百分比discount_amount:15discount_message:“花50美元,打8折!”},阈值:One hundred.discount_type:百分比discount_amount:20.discount_message:“花100美元,打8折!”},# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# TieredDiscountBySpendCampaign##如果购物车总数大于(或等于)输入的# threshold,关联的折扣应用于每个项目。# ================================================================TieredDiscountBySpendCampaigndef初始化@tiers=sort_by||:阈值}。反向结束def运行applicable_tier=@tiers找到||subtotal_price>=分:One hundred.:阈值])}返回如果applicable_tiernil ?discount_applicator=DiscountApplicatorapplicable_tier: discount_type],applicable_tier: discount_amount],applicable_tier: discount_messageline_items每一个|line_item|下一个如果line_item变体产品gift_card吗?discount_applicator应用line_item结束结束结束活动=TieredDiscountBySpendCampaignSPENDING_THRESHOLDS),活动每一个|运动|运动运行输入结束输出=输入

按数量分层产品折扣

使用此脚本为特定产品提供批量折扣,折扣百分比根据购物车中这些产品的数量增加。

例如,如果顾客购买2顶或以上帽子,每顶帽子打9折;如果顾客购买5顶或以上帽子,每顶帽子打15折。

# ================================ 可定制的设置  ================================# ================================================================#按数量分层产品折扣##如果匹配项的总数量大于(或)#等于)输入的阈值,则相关折扣为#应用于每个匹配项。## - 'product_selector_match_type'决定我们是否寻找与输入的选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'product_selectors'是一个标识符列表(来自上面)#合格产品。产品/变体ID列表应该只#包含数字(即:没有引号)。如果使用':all',则此#也可以是'nil'。# - 'tiers'是一个层级列表,其中:# -“数量”是你需要购买的最小数量#合格# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用# ================================================================PRODUCT_DISCOUNT_TIERS=product_selector_match_type:包括product_selector_type:标签product_selectors:“your_tag”],层:数量:2discount_type:百分比discount_amount:10discount_message:“2人以上9折”},数量:5discount_type:百分比discount_amount:15discount_message:“5人以上优惠15%”},],},# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# TieredProductDiscountByQuantityCampaign##如果匹配项的总数量大于(或)#等于)输入的阈值,则相关折扣为#应用于每个匹配项。# ================================================================TieredProductDiscountByQuantityCampaigndef初始化活动@campaigns=活动结束def运行@campaigns每一个|运动|product_selector=ProductSelector运动: product_selector_match_type],运动: product_selector_type],运动: product_selectors],applicable_items=line_items选择|line_item|product_selector比赛吗?line_item}下一个如果applicable_itemsnil ?total_applicable_quantity=applicable_items地图&数量:).减少0+=运动:层]。sort_by||数量:}。反向applicable_tier=找到||数量:< =total_applicable_quantity}下一个如果applicable_tiernil ?discount_applicator=DiscountApplicatorapplicable_tier: discount_type],applicable_tier: discount_amount],applicable_tier: discount_messageapplicable_items每一个|line_item|discount_applicator应用line_item结束结束结束结束活动=TieredProductDiscountByQuantityCampaignPRODUCT_DISCOUNT_TIERS),活动每一个|运动|运动运行输入结束输出=输入

按产品消费分层产品折扣

使用此脚本提供百分比折扣,折扣根据购物车中特定商品的总价值增加。

例如,如果顾客消费30美元或以上,就给他们10%的折扣,如果消费50美元或以上,就给他们15%的折扣,如果消费100美元或以上,就给他们20%的折扣,但只针对与特定标签匹配的商品。

# ================================ 可定制的设置  ================================# ================================================================#按产品消费阈值分层产品折扣#如果在匹配项目上花费的总金额大于(或)#等于)输入的阈值,则相关折扣为#应用于每个匹配项。## - 'product_selector_match_type'决定我们是否寻找与输入的选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'product_selectors'是一个标识符列表(从上面)#表示合格产品。产品/变体ID列表应该#只包含数字(即:没有引号)。如果使用':all',# this也可以是'nil'。# - 'tiers'是一个层级列表,其中:# -“threshold”是所需的最低金额#合格# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用# ================================================================PRODUCT_DISCOUNT_TIERS=product_selector_match_type:排除product_selector_type:标签product_selectors:“your_tag”“another_tag”],层:阈值:One hundred.discount_type:百分比discount_amount:10discount_message:“满100美元可享9折优惠!”},],},# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# TieredProductDiscountByProductSpendCampaign#如果在匹配项目上花费的总金额大于(或)#等于)输入的阈值,则相关折扣为#应用于每个匹配项。# ================================================================TieredProductDiscountByProductSpendCampaigndef初始化活动@campaigns=活动结束def运行@campaigns每一个|运动|如果运动: product_selector_type= =:所有total_applicable_cost=subtotal_priceapplicable_items=line_items其他的product_selector=ProductSelector运动: product_selector_match_type],运动: product_selector_type],运动: product_selectors],applicable_items=line_items选择|line_item|product_selector比赛吗?line_item}下一个如果applicable_itemsnil ?total_applicable_cost=applicable_items地图&: line_price).减少+结束=运动:层]。sort_by||:阈值}。反向applicable_tier=找到||total_applicable_cost>=分:One hundred.:阈值])}下一个如果applicable_tiernil ?discount_applicator=DiscountApplicatorapplicable_tier: discount_type],applicable_tier: discount_amount],applicable_tier: discount_messageapplicable_items每一个|line_item|discount_applicator应用line_item结束结束结束结束活动=TieredProductDiscountByProductSpendCampaignPRODUCT_DISCOUNT_TIERS),活动每一个|运动|运动运行输入结束输出=输入

产品折扣

使用此脚本提供特定项目的折扣。

例如,给顾客打上标签的商品打九折<代码>折扣

# ================================ 可定制的设置  ================================# ================================================================#按产品打折##任何匹配的商品将按输入的金额打折。## - 'product_selector_match_type'决定我们是否寻找与输入的选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'product_selectors'是一个标识符列表(从上面)#表示合格产品。产品/变体ID列表应该#只包含数字(即:没有引号)。如果使用':all',# this也可以是'nil'。# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用# ================================================================PRODUCT_DISCOUNTS=product_selector_match_type:包括product_selector_type:标签product_selectors:“your_tag”],discount_type:百分比discount_amount:10discount_message:“贴有标签的产品打九折!”}# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# ProductDiscountCampaign##任何匹配的商品将按输入的金额打折。# ================================================================ProductDiscountCampaigndef初始化活动@campaigns=活动结束def运行@campaigns每一个|运动|product_selector=ProductSelector运动: product_selector_match_type],运动: product_selector_type],运动: product_selectors],discount_applicator=DiscountApplicator运动: discount_type],运动: discount_amount],运动: discount_messageline_items每一个|line_item|下一个除非product_selector比赛吗?line_itemdiscount_applicator应用line_item结束结束结束结束活动=ProductDiscountCampaignPRODUCT_DISCOUNTS),活动每一个|运动|运动运行输入结束输出=输入

产品折扣按折扣代码

如果使用特定的折扣代码,则使用此脚本提供特定项目的折扣。

例如,给顾客打上标签的商品打九折<代码>折扣如果他们使用折扣代码<代码>DISCOUNT_10

# ================================ 可定制的设置  ================================# ================================================================#产品折扣折扣代码##如果使用任何匹配的折扣代码,任何匹配的项目#将按输入的金额打折扣。## - 'discount_code_match_type'决定是否如下# strings应该是完全匹配或部分匹配。可以是:# - ':exact'表示精确匹配# - ':partial'表示部分匹配# - 'discount_codes'是标识折扣的字符串列表#代码# - 'product_selector_match_type'决定我们是否寻找与输入的选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'product_selectors'是一个标识符列表(从上面)#表示合格产品。产品/变体ID列表应该#只包含数字(即:没有引号)。如果使用':all',# this也可以是'nil'。# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用# ================================================================PRODUCT_DISCOUNTS_BY_DISCOUNT_CODE=discount_code_match_type:精确discount_codes:“TESTCODE1”“TESTCODE2”],product_selector_match_type:包括product_selector_type:标签product_selectors:“your_tag”],discount_type:百分比discount_amount:10discount_message:“贴有标签的产品打九折!”}# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# DiscountCodeSelector#查找所提供的折扣代码是否与#输入代码。# ================================================================DiscountCodeSelectordef初始化match_typediscount_codes@comparator=match_type= =:确切“= =”“有吗?”@discount_codes=discount_codes地图|discount_code|discount_codeupcase}结束def比赛吗?discount_code@discount_codes任何?|代码|discount_code代码upcase发送@comparator代码}结束结束# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# ProductDiscountByCodeCampaign##如果使用任何匹配的折扣代码,任何匹配的项目#将按输入的金额打折扣。# ================================================================ProductDiscountByCodeCampaigndef初始化活动@campaigns=活动结束def运行返回如果discount_codenil ?@campaigns每一个|运动|discount_code_selector=DiscountCodeSelector运动: discount_code_match_type],运动: discount_codes下一个除非discount_code_selector比赛吗?discount_codeproduct_selector=ProductSelector运动: product_selector_match_type],运动: product_selector_type],运动: product_selectors],discount_applicator=DiscountApplicator运动: discount_type],运动: discount_amount],运动: discount_messageline_items每一个|line_item|下一个除非product_selector比赛吗?line_itemdiscount_applicator应用line_item结束结束结束结束活动=ProductDiscountByCodeCampaignPRODUCT_DISCOUNTS_BY_DISCOUNT_CODE),活动每一个|运动|运动运行输入结束输出=输入

购买特定数量的产品,获得第二数量的折扣

如果购买数量超过一定数量,使用此脚本提供特定项目的折扣。

例如,让顾客购买三种带有标签的商品<代码>折扣第四件有标签的商品可享五折优惠<代码>折扣

# ================================ 可定制的设置  ================================# ================================================================#买X,买Y,换Z折扣##购买一定数量的匹配物品,获得一定数量的物品#个相同的匹配项目,并应用了输入的折扣。为#的例子:##“买两件带有标签的产品,再买另一件#标签“标签”为九折优惠## - 'product_selector_match_type'决定我们是否寻找与输入的选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'product_selectors'是一个标识符列表(来自上面)#合格产品。产品/变体ID列表应该只#包含数字(即:没有引号)。如果使用':all',则此#也可以是'nil'。# - 'quantity_to_buy'是需要购买的产品数量#合格# - 'quantity_to_discount'是要折扣的产品数量# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用##在运行多个报价的情况下需要注意的是产品选择之间不应该有任何重叠因为这会导致额外的折扣。例如,你应该#不要提供“买1件X产品,打5折”和“买2件”#产品X,送1件”# ================================================================BUY_X_GET_Y_FOR_Z=product_selector_match_type:包括product_selector_type::product_selectors:quantity_to_buy:1quantity_to_discount:1discount_type:百分比discount_amount:50discount_message:“买一件,第二件五折!”},# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# BuyXGetYForZCampaign##购买一定数量的匹配物品,获得一定数量的物品#个相同的匹配项目,并应用了输入的折扣。# ================================================================BuyXGetYForZCampaigndef初始化活动@campaigns=活动结束def运行@campaigns每一个|运动|product_selector=ProductSelector运动: product_selector_match_type],运动: product_selector_type],运动: product_selectors],eligible_items=line_items选择|line_item|product_selector比赛吗?line_item}下一个如果eligible_itemsnil ?eligible_items=eligible_itemssort_by|line_item|-line_item变体价格}quantity_to_buy=运动: quantity_to_buyquantity_to_discount=运动: quantity_to_discountbundle_size=quantity_to_buy+quantity_to_discountnumber_of_bundles=eligible_items地图&数量:).减少0+/bundle_size).地板上number_of_discountable_items=number_of_bundlesquantity_to_discount下一个除非number_of_discountable_items>0discount_applicator=DiscountApplicator运动: discount_type],运动: discount_amount],运动: discount_message自我loop_itemsdiscount_applicatoreligible_itemsnumber_of_discountable_itemsquantity_to_buyquantity_to_discount结束结束defloop_itemsdiscount_applicatorline_itemsnum_to_discountquantity_to_buyquantity_to_discount盈余=0bundle_size=quantity_to_buy+quantity_to_discountline_items每一个|line_item|line_quantity=line_item数量+盈余如果line_quantity>quantity_to_buybundles_per_line=line_quantity/bundle_size).地板上take_quantity=bundles_per_linequantity_to_discount盈余+ =line_quantity-bundle_sizebundles_per_line))如果line_item数量>take_quantitydiscount_item=line_item分裂花:take_quantitydiscount_applicator应用discount_item位置=line_itemsfind_indexline_itemline_items插入位置+1discount_itemnum_to_discount- =take_quantity其他的discount_applicator应用line_itemnum_to_discount- =line_item数量结束其他的盈余+ =line_quantity结束打破如果num_to_discount< =0结束结束结束活动=BuyXGetYForZCampaignBUY_X_GET_Y_FOR_Z),活动每一个|运动|运动运行输入结束输出=输入

买一个捆绑包,在折扣的时候得到一个额外的产品

使用这个脚本提供一个特定的项目折扣,如果他们已经购买了许多其他项目。

例如,如果顾客同时购买一顶帽子、一件t恤和一副太阳镜,就免费赠送一双袜子。

# ================================ 可定制的设置  ================================# ================================================================#购买产品VWX,以Z折扣获得产品Y##购买一组特定的商品,再以折扣价获得另一件商品。#例如:##“买一件t恤、一顶帽子和一副太阳镜,免费获得一双袜子”## - 'bundle_items'是包含bundle的项列表# bundle,其中:# - 'product_id'是产品的ID# - 'quantity_needed'是完成所需的数量#捆绑包# - 'quantity_to_buy'是获得资格所需的捆绑包数量对于折扣产品# - 'discount_product_selector_match_type'决定我们是否查找与输入内容匹配或不匹配的产品#选择器。可以是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'discount_product_selector_type'决定如何符合条件#产品将被识别。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'discount_product_selectors'是一个标识符列表(from(如上#),以确保产品合格。产品/变体ID列表#应该只包含数字(例如:没有引号)。如果':all'是#也可以是'nil'。# - 'quantity_to_discount'是要折扣的商品数量每次报价# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用# ================================================================BUNDLE_DISCOUNTS=bundle_items:product_id:1234567890987quantity_needed:1},product_id:1234567890986quantity_needed:1},],quantity_to_buy:1discount_product_selector_match_type:包括discount_product_selector_type: product_iddiscount_product_selectors:1234567890123],quantity_to_discount:1discount_type:百分比discount_amount:10discount_message:“购买VWX产品,获得Y产品九折优惠”},# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# BundleSelector#查找属于输入包的任何项目并保存#。# ================================================================BundleSelectordef初始化bundle_items@bundle_items=bundle_items减少({})|accbundle_item|accbundle_item: product_id]]=cart_items:[],quantity_needed:bundle_item: quantity_needed],total_quantity:0}acc结束结束def构建line_items每一个|line_item|下一个除非@bundle_itemsline_item变体产品id@bundle_itemsline_item变体产品id] [: cart_items]。line_item@bundle_itemsline_item变体产品id] [: total_quantity+ =line_item数量结束@bundle_items结束结束# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# DiscountLoop#循环遍历所提供的行项目并对所提供的项目进行折扣按提供折扣的商品数量。# ================================================================DiscountLoopdef初始化discount_applicator@discount_applicator=discount_applicator结束defloop_itemsline_itemsnum_to_discountline_itemseach_with_index|line_item|打破如果num_to_discount< =0如果line_item数量>num_to_discountsplit_line_item=line_item分裂花:num_to_discount@discount_applicator应用split_line_item位置=line_itemsfind_indexline_itemline_items插入位置+1split_line_item打破其他的@discount_applicator应用line_itemnum_to_discount- =line_item数量结束结束结束结束# ================================================================# BundleDiscountCampaign##如果输入的捆绑包存在,则输入的折扣为#适用于输入的产品。# ================================================================BundleDiscountCampaigndef初始化活动@campaigns=活动结束def运行@campaigns每一个|运动|bundle_selector=BundleSelector运动: bundle_items])bundle_items=bundle_selector构建下一个如果bundle_items任何?|product_idproduct_info|product_info: total_quantity<product_info: quantity_needed结束num_bundles=bundle_items地图|product_idproduct_info|product_info: total_quantity/product_info: quantity_needed])结束num_bundles=num_bundles最小值地板上product_selector=ProductSelector运动: discount_product_selector_match_type],运动: discount_product_selector_type],运动: discount_product_selectors],discount_items=line_items选择|line_item|product_selector比赛吗?line_item}下一个如果discount_itemsnil ?discount_applicator=DiscountApplicator运动: discount_type],运动: discount_amount],运动: discount_messagediscount_loop=DiscountLoopdiscount_applicatordiscount_looploop_itemsdiscount_items运动: quantity_to_discountnum_bundles))结束结束结束活动=BundleDiscountCampaignBUNDLE_DISCOUNTS),活动每一个|运动|运动运行输入结束输出=输入

包的折扣

使用此脚本在将一组特定产品添加到购物车时提供折扣。

例如,为购买一件t恤、一顶帽子和一副太阳镜的顾客提供八折优惠。

# ================================ 可定制的设置  ================================# ================================================================#购买产品WXY,获得Z折扣##购买一组特定的产品,在a#折扣。例如:##“买一件t恤、一顶帽子和一副太阳镜,各打八折”## - 'bundle_items'是包含bundle的项列表# bundle,其中:# - 'product_id'是产品的ID# - 'quantity_needed'是完成所需的数量#捆绑包# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用# ================================================================BUNDLE_DISCOUNTS=bundle_items:product_id:1234567890987quantity_needed:1},product_id:1234567890986quantity_needed:1},],discount_type:百分比discount_amount:10discount_message:“购买产品X和产品Y,打九折!”},# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# BundleSelector#查找属于输入包的任何项目并保存#。# ================================================================BundleSelectordef初始化bundle_items@bundle_items=bundle_items减少({})|accbundle_item|accbundle_item: product_id]]=cart_items:[],quantity_needed:bundle_item: quantity_needed],total_quantity:0}acc结束结束def构建line_items每一个|line_item|下一个如果line_itemline_price_changed吗?下一个除非@bundle_itemsline_item变体产品id@bundle_itemsline_item变体产品id] [: cart_items]。line_item@bundle_itemsline_item变体产品id] [: total_quantity+ =line_item数量结束@bundle_items结束结束# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# DiscountLoop#循环遍历所提供的行项目并对所提供的项目进行折扣按提供折扣的商品数量。# ================================================================DiscountLoopdef初始化discount_applicator@discount_applicator=discount_applicator结束defloop_itemsline_itemsnum_to_discountline_itemseach_with_index|line_item|打破如果num_to_discount< =0如果line_item数量>num_to_discountsplit_line_item=line_item分裂花:num_to_discount@discount_applicator应用split_line_item位置=line_itemsfind_indexline_itemline_items插入位置+1split_line_item打破其他的@discount_applicator应用line_itemnum_to_discount- =line_item数量结束结束结束结束# ================================================================# BundleDiscountCampaign##如果输入的捆绑包存在,则输入的折扣为#应用于bundle中的每个项目。# ================================================================BundleDiscountCampaigndef初始化活动@campaigns=活动结束def运行@campaigns每一个|运动|bundle_selector=BundleSelector运动: bundle_items])bundle_items=bundle_selector构建下一个如果bundle_items任何?|product_idproduct_info|product_info: total_quantity<product_info: quantity_needed结束num_bundles=bundle_items地图|product_idproduct_info|product_info: total_quantity/product_info: quantity_needed])结束num_bundles=num_bundles最小值地板上discount_applicator=DiscountApplicator运动: discount_type],运动: discount_amount],运动: discount_messagediscount_loop=DiscountLoopdiscount_applicatorbundle_items每一个|product_idproduct_info|discount_looploop_itemsproduct_info: cart_items],product_info: quantity_needednum_bundles),结束结束结束结束活动=BundleDiscountCampaignBUNDLE_DISCOUNTS),活动每一个|运动|运动运行输入结束输出=输入

买一送一的优惠

使用此脚本,当客户购买一定数量的不同产品时,提供商品的百分比折扣。

例如,如果顾客购买两件t恤,就给他们一顶帽子打九折。

# ================================ 可定制的设置  ================================# ================================================================#购买产品W的V,以Z折扣获得产品Y的X##购买一定数量的匹配物品,获得一定数量的#与输入折扣相匹配的另一组商品#应用。例如:##“买两件t恤,打九折送一顶帽子”## - 'buy_product_selector_match_type'决定我们是否查看#表示与输入的选择器匹配或不匹配的产品。#可以是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'buy_product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'buy_product_selectors'是一个标识符列表(从上面)#表示合格产品。产品/变体ID列表应该只#包含数字(即:没有引号)。如果使用':all',则此#也可以是'nil'。# - 'quantity_to_buy'是需要购买的产品数量#合格# - 'get_selector_match_type'与' Buy '相同#以上版本# - 'get_product_selector_type'和' Buy '的意思是一样的#以上版本# - 'get_product_selectors'与' Buy '相同#以上版本# - 'quantity_to_discount'是要折扣的产品数量# - 'allow_incomplete_bundle'决定是否使用#要打折的商品可以打折,也可以全部打折#需要出席。可以是:# -“真”# -“false”# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用# ================================================================BUYVOFW_GETXOFY_FORZ=buy_product_selector_match_type:包括buy_product_selector_type:标签buy_product_selectors:“your_tag”“another_tag”],quantity_to_buy:1get_product_selector_match_type:包括get_product_selector_type:标签get_product_selectors:“your_other_tag”“a_different_tag”],quantity_to_discount:1allow_incomplete_bundle:discount_type:百分比discount_amount:One hundred.discount_message:“买X产品,免费送Y产品!”},buy_product_selector_match_type:包括buy_product_selector_type: product_idbuy_product_selectors:12345678909871234567890986],quantity_to_buy:1get_product_selector_match_type:包括get_product_selector_type: product_idget_product_selectors:12345678909851234567890984],quantity_to_discount:1allow_incomplete_bundle:discount_type:美元discount_amount:10discount_message:“买X产品,Y产品减价10美元!”},# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# DiscountLoop#循环遍历所提供的行项目并对所提供的项目进行折扣按提供折扣的商品数量。# ================================================================DiscountLoopdef初始化discount_applicator@discount_applicator=discount_applicator结束defloop_itemsline_itemsnum_to_discountline_items每一个|line_item|打破如果num_to_discount< =0如果line_item数量>num_to_discountsplit_line_item=line_item分裂花:num_to_discount@discount_applicator应用split_line_item位置=line_itemsfind_indexline_itemline_items插入位置+1split_line_item打破其他的@discount_applicator应用line_itemnum_to_discount- =line_item数量结束结束结束结束# ================================================================# BuyVofWGetXofYForZCampaign##购买一定数量的匹配物品,获得一定数量的#与输入折扣相匹配的另一组商品#应用。# ================================================================BuyVofWGetXofYForZCampaigndef初始化活动@campaigns=活动结束def运行@campaigns每一个|运动|buy_product_selector=ProductSelector运动: buy_product_selector_match_type],运动: buy_product_selector_type],运动: buy_product_selectors],get_product_selector=ProductSelector运动: get_product_selector_match_type],运动: get_product_selector_type],运动: get_product_selectors],buy_items=[]get_item=[]line_items每一个|line_item|buy_itemsline_item如果buy_product_selector比赛吗?line_itemget_itemline_item如果get_product_selector比赛吗?line_item结束下一个如果buy_items空的吗?||get_item空的吗?get_item=get_itemsort_by|line_item|line_item变体价格}quantity_to_buy=运动: quantity_to_buyquantity_to_discount=运动: quantity_to_discountbuy_offers=buy_items地图&数量:).减少0+/quantity_to_buy).地板上如果运动: allow_incomplete_bundlenumber_of_bundles=buy_offers其他的get_offers=get_item地图&数量:).减少0+/quantity_to_discount).地板上number_of_bundles=buy_offersget_offers]。最小值结束number_of_discountable_items=number_of_bundlesquantity_to_discount下一个除非number_of_discountable_items>0discount_applicator=DiscountApplicator运动: discount_type],运动: discount_amount],运动: discount_messagediscount_loop=DiscountLoopdiscount_applicatordiscount_looploop_itemsget_itemnumber_of_discountable_items结束结束结束活动=BuyVofWGetXofYForZCampaignBUYVOFW_GETXOFY_FORZ),活动每一个|运动|运动运行输入结束输出=输入

以特定的金额购买特定数量的产品

使用此脚本以选定的价格提供多个产品。

例如,为顾客提供2件t恤,售价20美元。

# ================================ 可定制的设置  ================================# ================================================================#以$Z购买产品Y的X##以特定价格购买一定数量的匹配物品。#例如:##“花20美元买两件t恤”## - 'product_selector_match_type'决定我们是否寻找与输入的选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'product_selectors'是一个标识符列表(从上面)#表示合格产品。产品/变体ID列表应该#只包含数字(即:没有引号)。如果使用':all',# this也可以是'nil'。# - 'quantity_to_buy'是需要购买的产品数量#合格# - 'final_price '是所有产品的收费金额#是报价的一部分# - 'discount_message'是折扣时显示的消息#被应用# ================================================================BUY_X_GET_Y_FOR_Z=product_selector_match_type:包括product_selector_type:标签product_selectors:“your_tag”],quantity_to_buy:2final_price:One hundred.discount_message:“20美元买2个”},# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DollarDiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DollarDiscountApplicatordef初始化discount_message@discount_message=discount_message结束def应用line_itemdiscount_amountnew_line_price=line_itemline_price-discount_amountline_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# BuyXOfYForZCampaign##以特定价格购买一定数量的匹配物品。# ================================================================BuyXOfYForZCampaigndef初始化活动@campaigns=活动结束def运行@campaigns每一个|运动|product_selector=ProductSelector运动: product_selector_match_type],运动: product_selector_type],运动: product_selectors],eligible_items=line_items选择|line_item|product_selector比赛吗?line_item}下一个如果eligible_itemsnil ?eligible_item_count=eligible_items地图&数量:).减少0+quantity_to_buy=运动: quantity_to_buynumber_of_offers=eligible_item_count/quantity_to_buy).地板上下一个除非number_of_offers>0number_of_discountable_items=number_of_offersquantity_to_buytotal_offer_price=分:One hundred.number_of_offers运动: final_price])discount_applicator=DollarDiscountApplicator运动: discount_message])自我loop_itemseligible_itemsnumber_of_discountable_itemstotal_offer_pricediscount_applicator结束结束defloop_itemsline_itemsnum_to_discounttotal_pricediscount_applicatorcurrent_price=avg_price=total_price1/num_to_discountline_items=line_itemssort_by|line_item|line_item变体价格}line_items每一个|line_item|打破如果num_to_discount< =0如果line_item数量>num_to_discountsplit_line_item=line_item分裂花:num_to_discountdiscount_amount=split_line_itemline_price-total_price-current_pricediscount_applicator应用split_line_itemdiscount_amount位置=line_itemsfind_indexline_itemline_items插入位置+1split_line_item打破elsifline_item数量= =num_to_discountdiscount_amount=line_itemline_price-total_price-current_pricediscount_applicator应用line_itemdiscount_amount打破其他的如果line_item变体价格< =avg_pricecurrent_price+ =line_itemline_price其他的discount_amount=line_item变体价格-avg_priceline_item数量current_price+ =line_itemline_price-discount_amountdiscount_applicator应用line_itemdiscount_amount结束num_to_discount- =line_item数量结束结束结束结束活动=BuyXOfYForZCampaignBUY_X_GET_Y_FOR_Z),活动每一个|运动|运动运行输入结束输出=输入

购买赠送礼品

如果购物车总额大于某一金额,则使用此脚本提供特定产品的折扣。

例如,如果顾客消费超过75美元,就提供一份免费礼物。

# ================================ 可定制的设置  ================================# ================================================================花费$X,以$ Z折扣获得产品Y##如果购物车的总额大于(或等于)输入的# threshold(减去折扣金额),输入的数量#匹配项目按输入的金额打折。## - 'product_selector_match_type'决定我们是否寻找与输入的选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'product_selectors'是一个标识符列表(从上面)#表示合格产品。产品/变体ID列表应该#只包含数字(即:没有引号)。如果使用':all',# this也可以是'nil'。# -“门槛”是获得资格所需花费的金额# - 'quantity_to_discount'是要折扣的商品数量#如果合格# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用# ================================================================SPENDX_GETY_FORZ=product_selector_match_type:包括product_selector_type: product_idproduct_selectors:1234567890123],阈值:75quantity_to_discount:1discount_type:百分比discount_amount:One hundred.discount_message:“花75美元或以上,就可以免费获得X产品!”},# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# DiscountLoop#循环遍历所提供的行项目并对所提供的项目进行折扣按提供折扣的商品数量。# ================================================================DiscountLoopdef初始化discount_applicator@discount_applicator=discount_applicator结束defloop_itemsline_itemsnum_to_discountline_items每一个|line_item|打破如果num_to_discount< =0如果line_item数量>num_to_discountsplit_line_item=line_item分裂花:num_to_discount@discount_applicator应用split_line_item位置=line_itemsfind_indexline_itemline_items插入位置+1split_line_item打破其他的@discount_applicator应用line_itemnum_to_discount- =line_item数量结束结束结束结束# ================================================================# SpendXGetYForZCampaign##如果购物车的总额大于(或等于)输入的# threshold(减去折扣金额),输入的数量#匹配项目按输入的金额打折。# ================================================================SpendXGetYForZCampaigndef初始化活动@campaigns=活动结束def运行@campaigns每一个|运动|阈值=分:One hundred.运动:阈值下一个如果subtotal_price<阈值product_selector=ProductSelector运动: product_selector_match_type],运动: product_selector_type],运动: product_selectors],eligible_items=line_items选择|line_item|product_selector比赛吗?line_item}下一个如果eligible_itemsnil ?eligible_items=eligible_itemssort_by|line_item|line_item变体价格}num_to_discount=运动: quantity_to_discountcart_total=subtotal_priceeligible_items每一个|line_item|打破如果num_to_discount< =0如果line_item数量>num_to_discountcart_total- =line_item变体价格num_to_discount打破其他的cart_total- =line_itemline_pricenum_to_discount- =line_item数量结束结束下一个如果cart_total<阈值discount_applicator=discount_applicator=DiscountApplicator运动: discount_type],运动: discount_amount],运动: discount_messagediscount_loop=DiscountLoopdiscount_applicatordiscount_looploop_itemseligible_items运动: quantity_to_discount])结束结束结束活动=SpendXGetYForZCampaignSPENDX_GETY_FORZ),活动每一个|运动|运动运行输入结束输出=输入

产品折扣按客户标签

使用此脚本为带有特定标签的客户提供特定产品的折扣。

例如,提供20%的折扣,如果客户有<代码>贵宾标签。

# ================================ 可定制的设置  ================================# ================================================================#按客户标签的产品折扣##如果我们有一个匹配的客户(通过标签),输入的折扣#将应用于任何匹配项。## - 'customer_tag_match_type'决定是否查找客户#是否被任何输入的标签所标记。可以是:# - ':include'检查客户是否被标记# - ':exclude'确保客户没有被标记# - 'customer_tags'是标识合格的标签列表#客户# - 'product_selector_match_type'决定我们是否寻找与输入的选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'product_selectors'是一个标识符列表(从上面)#表示合格产品。产品/变体ID列表应该#只包含数字(即:没有引号)。如果使用':all',# this也可以是'nil'。# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用# ================================================================DISCOUNTS_FOR_CUSTOMER_TAG=customer_tag_match_type:包括customer_tags:“贵宾”],product_selector_match_type:包括product_selector_type::product_selectors:discount_type:百分比discount_amount:20.discount_message:“VIP客户优惠!”},# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# CustomerTagSelector#查找所提供的客户是否有任何输入的标签。# ================================================================CustomerTagSelectordef初始化match_type标签@comparator=match_type= =:包括“什么?”“没有吗?”@ tags=标签地图|标签|标签downcase}结束def比赛吗?客户customer_tags=客户标签地图|标签|标签downcase}@ tags&customer_tags).发送@comparator结束结束# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# DiscountForCustomerTagCampaign##如果我们有一个匹配的客户(通过标签),输入的折扣#应用于任何匹配项。# ================================================================DiscountForCustomerTagCampaigndef初始化活动@campaigns=活动结束def运行返回除非客户&标签@campaigns每一个|运动|customer_tag_selector=CustomerTagSelector运动: customer_tag_match_type],运动: customer_tags])下一个除非customer_tag_selector比赛吗?客户product_selector=ProductSelector运动: product_selector_match_type],运动: product_selector_type],运动: product_selectorsdiscount_applicator=DiscountApplicator运动: discount_type],运动: discount_amount],运动: discount_messageline_items每一个|line_item|下一个除非product_selector比赛吗?line_itemdiscount_applicator应用line_item结束结束结束结束活动=DiscountForCustomerTagCampaignDISCOUNTS_FOR_CUSTOMER_TAG),活动每一个|运动|运动运行输入结束输出=输入

产品折扣由客户营销ob欧宝娱乐app下载地址

使用此脚本向接受营销的客户提供特定产品的折扣。ob欧宝娱乐app下载地址

例如,为任何接受营销的客户提供所有产品的10%折扣。ob欧宝娱乐app下载地址

# ================================ 可定制的设置  ================================# ================================================================#客户营销的产品折扣ob欧宝娱乐app下载地址##如果客户接受营销,任何匹配的项目都是ob欧宝娱乐app下载地址#按输入金额贴现。## - 'product_selector_match_type'决定我们是否寻找与输入的选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'product_selectors'是一个标识符列表(从上面)#表示合格产品。产品/变体ID列表应该#只包含数字(即:没有引号)。如果使用':all',# this也可以是'nil'。# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用# ================================================================PRODUCT_DISCOUNTS_BY_CUSTOMER_ob欧宝娱乐app下载地址MARKETING=product_selector_match_type:包括product_selector_type::product_selectors:discount_type:百分比discount_amount:10discount_message:“订阅客户享九折优惠!”}# ================================ 脚本代码(不要编辑 ) ===============================# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# ProductDiscountByCustomerob欧宝娱乐app下载地址MarketingCampaign##如果客户接受营销,任何匹配的项目都是ob欧宝娱乐app下载地址#按输入金额贴现。# ================================================================ProductDiscountByCustomerob欧宝娱乐app下载地址MarketingCampaigndef初始化活动@campaigns=活动结束def运行返回如果客户nil ?@campaigns每一个|运动|下一个除非客户accepts_ob欧宝娱乐app下载地址marketing吗?product_selector=ProductSelector运动: product_selector_match_type],运动: product_selector_type],运动: product_selectorsdiscount_applicator=DiscountApplicator运动: discount_type],运动: discount_amount],运动: discount_messageline_items每一个|line_item|下一个除非product_selector比赛吗?line_itemdiscount_applicator应用line_item结束结束结束结束活动=ProductDiscountByCustomerob欧宝娱乐app下载地址MarketingCampaignPRODUCT_DISCOUNTS_BY_CUSTOMER_ob欧宝娱乐app下载地址MARKETING),活动每一个|运动|运动运行输入结束输出=输入

产品折扣的客户订单数量

使用此脚本为具有特定订单数量的客户提供特定产品的折扣。

例如,为没有订单的客户提供10%的折扣。

# ================================ 可定制的设置  ================================# ================================================================#产品折扣按订单数量##如果客户已经下了匹配数量的订单,任何匹配项目按输入的金额打折。## - 'order_count_match_type'决定我们如何比较客户的订单数量达到输入的限制。可以是:# - ':greater_than'确保客户的订单数量#大于输入的限制# - ':greater_than_equal'确保客户的订单# count大于或等于输入的限制# - ':less_than'确保客户的订单数量为#小于输入的限制# - ':less_than_equal'确保客户的订单# count小于或等于输入的限制# - 'product_selector_match_type'决定我们是否寻找与输入的选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'product_selectors'是一个标识符列表(从上面)#表示合格产品。产品/变体ID列表应该#只包含数字(即:没有引号)。如果使用':all',# this也可以是'nil'。# - 'discount_type'是要提供的折扣类型。可以#:# - ':percent'# - ':美元'# - 'discount_amount'是折扣的百分比/美元#应用(每项)# - 'discount_message'是折扣时显示的消息#被应用# ================================================================PRODUCT_DISCOUNTS_BY_ORDER_COUNT=order_count_match_type: less_thanorder_count_limit:1product_selector_match_type:包括product_selector_type::product_selectors:discount_type:百分比discount_amount:10discount_message:“首次购房者打九折!”}# ================================ 脚本代码(不要编辑 ) ===============================# ================================================================# OrderCountSelector#查找客户是否已经下了一定数量的订单# ================================================================OrderCountSelectordef初始化match_type限制@match_type=match_type@limit=限制结束def比赛吗?客户如果自我respond_to吗?@match_type自我发送@match_type客户@limit其他的提高RuntimeError“无效的订单计数匹配类型”结束结束defgreater_than客户限制客户orders_count>限制结束defgreater_than_equal客户限制客户orders_count>=限制结束defless_than客户限制客户orders_count<限制结束defless_than_equal客户限制客户orders_count< =限制结束结束# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DiscountApplicator##将输入的折扣应用于提供的行项目。# ================================================================DiscountApplicatordef初始化discount_typediscount_amountdiscount_message@discount_type=discount_type@discount_message=discount_message@discount_amount=如果discount_type= =: %1-discount_amount0.01其他的分:One hundred.discount_amount结束结束def应用line_itemnew_line_price=如果@discount_type= =: %line_itemline_price@discount_amount其他的line_itemline_price-@discount_amountline_item数量),]。马克斯结束line_itemchange_line_pricenew_line_price信息:@discount_message结束结束# ================================================================# ProductDiscountByOrderCountCampaign##如果客户已经下了匹配数量的订单,任何匹配项目按输入的金额打折。# ================================================================ProductDiscountByOrderCountCampaigndef初始化活动@campaigns=活动结束def运行返回如果客户nil ?@campaigns每一个|运动|order_count_selector=OrderCountSelector运动: order_count_match_type],运动: order_count_limit下一个除非order_count_selector比赛吗?客户product_selector=ProductSelector运动: product_selector_match_type],运动: product_selector_type],运动: product_selectorsdiscount_applicator=DiscountApplicator运动: discount_type],运动: discount_amount],运动: discount_messageline_items每一个|line_item|下一个除非product_selector比赛吗?line_itemdiscount_applicator应用line_item结束结束结束结束活动=ProductDiscountByOrderCountCampaignPRODUCT_DISCOUNTS_BY_ORDER_COUNT),活动每一个|运动|运动运行输入结束输出=输入

禁用折扣代码

使用此脚本在结帐过程中禁用折扣代码。

例如,在你的商店进行促销时,防止顾客使用折扣代码。

# ================================ 可定制的设置  ================================# ================================================================#禁用折扣码使用##任何折扣码将被拒绝与输入的消息。## - 'REJECTION_MESSAGE'是折扣时显示的消息# code被拒绝# ================================================================REJECTION_MESSAGE=“折扣代码不能在此促销期间使用”# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# DisableDiscountCodesCampaign##任何折扣码将被拒绝与输入的消息。# ================================================================DisableDiscountCodesCampaigndef初始化rejection_message@rejection_message=rejection_message结束def运行返回如果discount_codenil ?discount_code拒绝信息:@rejection_message结束结束活动=DisableDiscountCodesCampaignREJECTION_MESSAGE),活动每一个|运动|运动运行输入结束输出=输入

禁用产品的折扣代码

如果购物车中有特定的产品,可以使用此脚本在结帐过程中禁用折扣代码。

例如,防止客户使用折扣码,如果产品标有<代码>折扣在购物车里。

# ================================ 可定制的设置  ================================# ================================================================#禁用产品折扣代码##如果使用了任何匹配的折扣代码,以及任何匹配的项目#是在购物车中,折扣代码被拒绝与输入#消息。## - 'discount_code_match_type'决定是否如下# strings应该是完全匹配或部分匹配。可以是:# - ':exact'表示精确匹配# - ':partial'表示部分匹配# - 'discount_codes'是标识折扣的字符串列表#代码# - 'product_selector_match_type'决定我们是否寻找与输入的选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'product_selectors'是一个标识符列表(从上面)#表示合格产品。产品/变体ID列表应该#只包含数字(即:没有引号)。如果使用':all',# this也可以是'nil'。# - 'rejection_message'是折扣时显示的消息# code被拒绝# ================================================================REJECT_DISCOUNT_CODE_FOR_PRODUCTS=discount_code_match_type:精确discount_codes:“TESTCODE1”“TESTCODE2”],product_selector_match_type:包括product_selector_type:标签product_selectors:“折扣”],rejection_message:"折扣代码不能用于'打折'产品"}# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# DiscountCodeSelector#查找所提供的折扣代码是否与#输入代码。# ================================================================DiscountCodeSelectordef初始化match_typediscount_codes@comparator=match_type= =:确切“= =”“有吗?”@discount_codes=discount_codes地图|discount_code|discount_codeupcase}结束def比赛吗?discount_code@discount_codes任何?|代码|discount_code代码upcase发送@comparator代码}结束结束# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# DisableDiscountCodesForProductsCampaign##如果使用了任何匹配的折扣代码,以及任何匹配的项目#是在购物车中,折扣代码被拒绝与输入#消息。# ================================================================DisableDiscountCodesForProductsCampaigndef初始化活动@campaigns=活动结束def运行返回如果discount_codenil ?@campaigns每一个|运动|discount_code_selector=DiscountCodeSelector运动: discount_code_match_type],运动: discount_codes下一个除非discount_code_selector比赛吗?discount_codeproduct_selector=ProductSelector运动: product_selector_match_type],运动: product_selector_type],运动: product_selectors],下一个除非line_items任何?|line_item|product_selector比赛吗?line_item}discount_code拒绝信息:运动: rejection_message])结束结束结束活动=DisableDiscountCodesForProductsCampaignREJECT_DISCOUNT_CODE_FOR_PRODUCTS),活动每一个|运动|运动运行输入结束输出=输入

限制产品数量

使用此脚本对特定产品应用数量限制。

例如,防止客户在单个订单中购买超过1个“产品X”。

# ================================ 可定制的设置  ================================# ================================================================#产品数量限制##如果任何匹配项的数量大于#输入阈值,多余的物品从购物车中删除。#需要注意的是,不会有通知给客户#当这种情况发生时。## -“enable”决定活动是否运行。可以是:# -“true”运行# -“false”表示不运行# - 'product_selector_match_type'决定我们是否寻找与输入的选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'确保产品不匹配# - 'product_selector_type'决定产品如何符合条件将标识为#。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变体ID查找产品# - ':subscription'查找订阅产品# - ':all'表示所有产品# - 'product_selectors'是一个标识符列表(从上面)#表示合格产品。产品/变体ID列表应该#只包含数字(即:没有引号)。如果使用':all',# this也可以是'nil'。# - 'variant_level_limit'决定是否低于限制#应用于变量或总数量级别。为例如,我可以有X个单独的匹配项目,#还是我只能有X个匹配的项目?#可以是:# - 'true'限制在一个变量级别# -“false”限制总数量# - 'quantity_allowed'是允许的产品数量# ================================================================QUANTITY_LIMITS=启用:真正的活动:product_selector_match_type:包括product_selector_type:标签product_selectors:“有限”],variant_level_limit:真正的quantity_allowed:2},}# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# ProductSelector##根据输入的条件查找匹配的产品。# ================================================================ProductSelectordef初始化match_typeselector_type选择器@match_type=match_type@comparator=match_type= =:包括“什么?”“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?line_item如果自我respond_to吗?@selector_type自我发送@selector_typeline_item其他的提高RuntimeError“无效的产品选择器类型”结束结束def标签line_itemproduct_tags=line_item变体产品标签地图|标签|标签downcase}@ selector=@ selector地图|选择器|选择器downcase}@ selector&product_tags).发送@comparator结束def类型line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品product_typedowncase结束def供应商line_item@ selector=@ selector地图|选择器|选择器downcase}@match_type= =:包括= =@ selector包括什么?line_item变体产品供应商downcase结束defproduct_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体产品id结束defvariant_idline_item@match_type= =:包括= =@ selector包括什么?line_item变体id结束def订阅line_itemline_itemselling_plan_idnil ?结束def所有line_item真正的结束结束# ================================================================# ProductQuantityLimitCampaign##如果任何匹配项的数量大于#输入阈值,多余的物品从购物车中删除。# ================================================================ProductQuantityLimitCampaigndef初始化启用活动@enable=启用@campaigns=活动结束def运行返回除非@enable@campaigns每一个|运动|product_selector=ProductSelector运动: product_selector_match_type],运动: product_selector_type],运动: product_selectors如果运动: variant_level_limitapplicable_items={}line_items每一个|line_item|下一个除非product_selector比赛吗?line_itemid=line_item变体id如果applicable_itemsid]。nil ?applicable_itemsid=项目:[],total_quantity:0}结束applicable_itemsid] [:项目]。line_itemapplicable_itemsid] [: total_quantity+ =line_item数量结束下一个如果applicable_itemsnil ?applicable_items每一个|id信息|下一个除非信息: total_quantity>运动: quantity_allowednum_to_remove=信息: total_quantity-运动: quantity_allowed自我loop_items信息:项目],num_to_remove结束其他的applicable_items=line_items选择|line_item|product_selector比赛吗?line_item}下一个如果applicable_itemsnil ?total_quantity=applicable_items地图&数量:).减少0+下一个除非total_quantity>运动: quantity_allowednum_to_remove=total_quantity-运动: quantity_allowed自我loop_itemsapplicable_itemsnum_to_remove结束结束结束defloop_itemsline_itemsnum_to_removeline_items每一个|line_item|如果line_item数量>num_to_removesplit_line_item=line_item分裂花:num_to_remove打破其他的指数=line_itemsfind_indexline_itemline_itemsdelete_at指数num_to_remove- =line_item数量结束打破如果num_to_remove< =0结束结束结束活动=ProductQuantityLimitCampaignQUANTITY_LIMITS:使],QUANTITY_LIMITS:活动],),活动每一个|运动|运动运行输入结束输出=输入

准备好开始使用ShOB欧宝娱乐APPopify销售了吗?

免费试用