如何将所有 shopify 过滤器添加到标准液体中
How to add all the shopify filters to standard liquid
我们在网络应用程序中使用 liquid。我注意到 Shopify 已经实施了一些有用的过滤器,这些过滤器默认情况下不包含在 liquid gem 中。例如url_param_escape
为了测试它,我这样做了:
$irb
require 'liquid'
Liquid::Template.parse('{{ " & " | url_param_escape }} ').render
=> " & "
显然默认情况下不包括这些过滤器。它们可以从某个地方获得吗?如果是这样,我应该在哪里以及如何将它们添加到解析器中?否则不是一个一个实现它们的情况,还是它们都来自同一个模块或什么?
你can/must自己写。它们很容易创建。下面是 url_param_escape 过滤器的示例实现:
module MyApp
module Liquid
module Filters
module UrlParamFilter
def url_param_escape(thing_to_escape)
CGI.escape(thing_to_escape)
end
end
end
end
end
然后您需要注册此过滤器,以便 Liquid 知道可以使用它。我通常在 config.after_initialize 内的 application.rb 中执行此操作,但如果您有很多,可能还有更好的地方可以去。这是一个例子:
config.after_initialize do
::Liquid::Template.register_filter(MyApp::Liquid::Filters::UrlParamFilter)
end
我们在网络应用程序中使用 liquid。我注意到 Shopify 已经实施了一些有用的过滤器,这些过滤器默认情况下不包含在 liquid gem 中。例如url_param_escape
为了测试它,我这样做了:
$irb
require 'liquid' Liquid::Template.parse('{{ " & " | url_param_escape }} ').render => " & "
显然默认情况下不包括这些过滤器。它们可以从某个地方获得吗?如果是这样,我应该在哪里以及如何将它们添加到解析器中?否则不是一个一个实现它们的情况,还是它们都来自同一个模块或什么?
你can/must自己写。它们很容易创建。下面是 url_param_escape 过滤器的示例实现:
module MyApp
module Liquid
module Filters
module UrlParamFilter
def url_param_escape(thing_to_escape)
CGI.escape(thing_to_escape)
end
end
end
end
end
然后您需要注册此过滤器,以便 Liquid 知道可以使用它。我通常在 config.after_initialize 内的 application.rb 中执行此操作,但如果您有很多,可能还有更好的地方可以去。这是一个例子:
config.after_initialize do
::Liquid::Template.register_filter(MyApp::Liquid::Filters::UrlParamFilter)
end