Skip to content
tobi edited this page Aug 12, 2010 · 35 revisions

Liquid is a template engine which was crafted for very specific requirements

  • It has to have simple markup and beautiful results. Template engines which don’t produce good looking results are no fun to use.
  • It needs to be non-evaling and secure. Liquid templates are made so that users can edit them. You don’t want to run code on your server which your users wrote.
  • It has to be stateless. The compile and render steps have to be separate, so that the expensive parsing and compiling can be done once; later on, you can just render it by passing in a hash with local variables and objects.
  • It needs to be able to style emails as well as HTML.

What does it look like?

source = %|
    {% for product in products %}
  • {{product.name}}

    Only {{product.price | price }} {{product.description | textile }}
  • {% endfor %}
| @template = Liquid::Template.parse(source) @template.render( ‘products’ => Product.all )

Stuff to read, watch, etc.

Who uses Liquid?

Why should I use Liquid?

  • You want to allow your users to edit the appearance of your application, but don’t want them to run insecure code on your server.
  • You want to render templates directly from the database.
  • You like Smarty-style template engines.
  • You need a template engine which does HTML just as well as emails.
  • You don’t like the markup language of your current template engine.