Skip to content

chros73/php-liquid

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Liquid template engine for PHP

Liquid is a PHP port of the Liquid template engine for Ruby, which was written by Tobias Lutke. Although there are many other templating engines for PHP, including Smarty (from which Liquid was partially inspired), Liquid had some advantages that made porting worthwhile:

  • Readable and human friendly syntax, that is usable in any type of document, not just html, without need for escaping.
  • Quick and easy to use and maintain.
  • 100% secure, no possibility of embedding PHP code.
  • Clean OO design, rather than the mix of OO and procedural found in other templating engines.
  • Seperate compiling and rendering stages for improved performance.
  • Easy to extend with your own tags and filters.
  • 100% Markup compatibility with a Ruby templating engine, making templates usable for either.
  • Unit tested: Liquid is fully unit-tested. The library is stable and ready to be used in large projects.

Why Liquid?

Why another templating library?

Liquid was written to meet three templating library requirements: good performance, easy to extend, and simply to use.

Basics

Example snippet:

{% if products %}
	<ul id="products">
	{% for product in products %}
	  <li>
		<h2>{{ product.name }}</h2>
		Only {{ product.price | price }}
	
		{{ product.description | prettyprint | paragraph }}
		
		{{ 'it rocks!' | paragraph }}
		
	  </li>      
	{% endfor %}
	</ul>
{% endif %}

Howto use Liquid

Code to render with original php-liquid:

$liquid->parse(file_get_contents('templates/products.tpl'))->render($products);

Requirements

  • PHP 5.1+

Issues

Have a bug? Please create an issue here on GitHub!

https://github.com/harrydeluxe/php-liquid/issues

Fork Notes

This fork is based on php-liquid by Mateo Murphy. The original library is still hosted at: (http://code.google.com/p/php-liquid/)

Variables couldn’t be used inside an ‘include’ or an ‘extends’ tag.

Which means the below code didn’t work:

{% include foo %}
{% include {{ foo }} %}

With this modification it will work (where a string not inside a " or ’ is considered as a variable):

{% include merchant/'head' %}
{% extends "root"/foo/bar/'index' %}

Code to render with modified php-liquid (backward compatible, which means the original example does still work but variables can’t be used in include and extends tags):

$liquid->parse(file_get_contents('templates/products.tpl'), $products)->render();

About

A PHP port of Ruby's Liquid Templates

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 99.7%
  • CSS 0.3%