2016-02-09 19 views
5

Stiamo utilizzando il liquido in un'applicazione web. Ho notato che Shopify ha implementato alcuni utili filtri che non sono inclusi di default nella gemma liquida. Per esempio url_param_escapeCome aggiungere tutti i filtri shopify al liquido standard

Per provarlo ho fatto questo:

$ IRB

require 'liquido' Liquid :: Template.parse ('{{ "&" | url_param_escape}}') .render => "&"

Chiaramente questi filtri non sono inclusi per impostazione predefinita. Sono disponibili da qualche parte? In tal caso, dove e come li aggiungo al parser? Altrimenti è il caso di implementarli tutti uno per uno o provengono tutti dallo stesso modulo o qualcosa del genere?

+0

Sembra che ci sia un problema con il filtro 'url_param_escape'. Ho provato diversi altri (rimuovere, aggiornare, aggiungere) e funzionano tutti. Ma l'url param escape non fa nulla. – Albin

+0

Grazie per aver testato questi Albin, tutti quelli in questa lista funzionano: https://github.com/Shopify/liquid/wiki/Liquid-for-Designers ma non tutti quelli elencati qui: https: // docs. shopify.com/themes/liquid-documentation/filters/string-filters – Will

risposta

1

È possibile/necessario scriverli da soli. Sono facili da creare. Ecco un esempio di implementazione del filtro 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 

allora avrete bisogno di registrare questo filtro in modo che il liquido sa usarlo. Di solito lo faccio in application.rb all'interno di config.after_initialize ma probabilmente c'è un posto migliore dove andare se ne hai molti. Ecco un esempio:

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