2016-02-09 6 views
5

Wir verwenden Flüssigkeit in einer Web-App. Ich habe bemerkt, dass Shopify einige nützliche Filter implementiert hat, die standardmäßig nicht im Liquid Gem enthalten sind. Zum Beispiel url_param_escapeSo fügen Sie alle standardmäßigen Filter zu Standard-Flüssigkeit hinzu

es zu testen, habe ich dies:

$ irb

erfordern 'Flüssigkeit' Flüssigkeit :: Template.parse ('{{ "&" | url_param_escape}}') .render => "&"

Offensichtlich diese Filter sind standardmäßig nicht enthalten. Sind sie irgendwo verfügbar? Wenn ja, wo und wie füge ich sie dem Parser hinzu? Ist es nicht ein Fall, sie alle nacheinander zu implementieren oder stammen sie alle aus demselben Modul oder so?

+0

Es scheint ein Problem mit dem 'url_param_escape' Filter zu geben. Ich habe mehrere andere versucht (entfernen, upcase, append) und sie alle arbeiten. Aber die URL param Flucht tut nichts. – Albin

+0

Danke für das Testen dieser Albin, alle der auf dieser Liste arbeiten: https://github.com/Shopify/liquid/wiki/Liquid-for-Designers aber nicht alle der hier aufgeführten: https: // docs. shopify.com/themes/liquid-documentation/filters/string-filters – Will

Antwort

1

Sie können/müssen sie selbst schreiben. Sie sind einfach zu erstellen. Hier ist ein Beispiel-Implementierung des url_param_escape Filter:

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 

Dann müssen Sie diesen Filter registrieren, damit Flüssigkeit weiß, es zu benutzen. Normalerweise mache ich das in application.rb in config.after_initialize, aber es gibt wahrscheinlich einen besseren Ort, an den es gehen kann, wenn Sie viele davon haben. Hier ein Beispiel dafür:

config.after_initialize do 
    ::Liquid::Template.register_filter(MyApp::Liquid::Filters::UrlParamFilter) 
end