如何在不使用脚本编辑器应用程序的情况下在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结帐中运行,因此很遗憾,您不能插入它。