如何解决如何在不使用脚本编辑器应用程序的情况下在shopify首次亮相主题中添加分层折扣脚本
我是Shopify的新手。请任何人都可以回答。以及如何在不使用任何脚本编辑器应用程序的情况下以首次亮相的默认主题添加折扣脚本的方法。 这是一个花费X金额并获得Y%折扣的脚本...我在Shopify中获得了这个ruby脚本。
PRODUCT_DISCOUNT_TIERS = [
{
product_selector_match_type: :include,product_selector_type: :tag,product_selectors: ["your_tag"],tiers: [
{
quantity: 2,discount_type: :percent,discount_amount: 10,discount_message: '10% off for 2+',},{
quantity: 5,discount_amount: 15,discount_message: '15% off for 5+',],]
class ProductSelector
def initialize(match_type,selector_type,selectors)
@match_type = match_type
@comparator = match_type == :include ? 'any?' : 'none?'
@selector_type = selector_type
@selectors = selectors
end
def match?(line_item)
if self.respond_to?(@selector_type)
self.send(@selector_type,line_item)
else
raise RuntimeError.new('Invalid product selector type')
end
end
def tag(line_item)
product_tags = line_item.variant.product.tags.map { |tag| tag.downcase.strip }
@selectors = @selectors.map { |selector| selector.downcase.strip }
(@selectors & product_tags).send(@comparator)
end
def type(line_item)
@selectors = @selectors.map { |selector| selector.downcase.strip }
(@match_type == :include) == @selectors.include?
(line_item.variant.product.product_type.downcase.strip)
end
def vendor(line_item)
@selectors = @selectors.map { |selector| selector.downcase.strip }
(@match_type == :include) == @selectors.include?
(line_item.variant.product.vendor.downcase.strip)
end
def product_id(line_item)
(@match_type == :include) == @selectors.include?(line_item.variant.product.id)
end
def variant_id(line_item)
(@match_type == :include) == @selectors.include?(line_item.variant.id)
end
def all(line_item)
true
end
end
class TieredPricingCampaign
def initialize(campaigns)
@campaigns = campaigns
end
def run(cart)
@campaigns.each do |campaign|
product_selector = ProductSelector.new(
campaign[:product_selector_match_type],campaign[:product_selector_type],campaign[:product_selectors],)
applicable_items = cart.line_items.select { |line_item| product_selector.match?(line_item)
}
next if applicable_items.nil?
total_applicable_quantity = applicable_items.map(&:quantity).reduce(0,:+)
tiers = campaign[:tiers].sort_by { |tier| tier[:quantity] }.reverse
applicable_tier = tiers.find { |tier| tier[:quantity] <= total_applicable_quantity }
next if applicable_tier.nil?
discount_applicator = DiscountApplicator.new(
applicable_tier[:discount_type],applicable_tier[:discount_amount],applicable_tier[:discount_message]
)
applicable_items.each do |line_item|
discount_applicator.apply(line_item)
end
end
end
end
CAMPAIGNS = [
TieredPricingCampaign.new(PRODUCT_DISCOUNT_TIERS),]
CAMPAIGNS.each do |campaign|
campaign.run(Input.cart)
end
Output.cart = Input.cart
是否可以在不使用脚本编辑器和Shopify plus应用程序的情况下添加脚本。请任何人帮助我。
解决方法
否,您必须使用Shopify脚本应用程序。
您不能在主题代码中编写ruby脚本,那里只允许使用液体和html / css / js。
如果您想获得自动折扣,请查看“自动折扣”(您可以激活一个)https://YOUR_STORE.myshopify.com/admin/discounts/automatic
。但是使用当前的折扣条件,您将无法实现您所描述的内容。
更正如果没有脚本编辑器应用程序,这是不可能的。该代码在Shopify结帐中运行,因此很遗憾,您不能插入它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。