Skip to content
Q edited this page Aug 16, 2020 · 40 revisions

Willow is a simple, logic-less, template engine built in PHP for WordPress.

It has been designed to meet the needs of front-end and back-end developers by providing a small, yet powerful set of tags and tools to speed up template development and prototype iteration, and is heavily influenced by Mustache.

Key Features:

  • Small tag library is easy to learn, use and control
  • Logic-less templates ensure clean separation of concerns, all logic lives in controllers
  • Limited access to PHP functions and variables provides better UI development experience
  • Portable and re-usable features via array and file configuration
  • Built-in support for WordPress, Advanced Custom Fields and totally compatible with other themes and plugins

Written in PHP with WordPress as a dependency

Currently this project is developed in the format of a WordPress plugin and has WordPress as a dependency ( using several top-level WordPress functions ), but will eventually be ported to a stand-alone system once more stable.

To use willow templates in your project, you will need to install this plugin, then create a template file with a .willow extension - for example test.willow - and select this template via the WordPress editor.

The pages of the wiki will attempt to demonstrate some common use-cases of Willow as well as documenting its syntaxes and internal workings.

Hello Willow

All Willow tags include a matching opening and closing pair, starting and ending with a curly bracket and one other internal character, as follows:

{~ ui~hello {+ <div>Willow says {{ hello }}</div> +} ~}

This tag call tries to find the ui ( context ) hello ( task ) method ( ui::hello() ) and wrap the return data in simple html:

public static function hello( $args = null ) {

	// define key + value to render ##
	return [
		'hello' => 'Hello'
	];

}

Return:

<div>Willow says Hello</div>

Read more about Willow Tags

Notes

Q Studio's normal workflow, sees Willow used as one part of a "trilogy" of key tools - the other 2 being the main Q Plugin and a parent / child theme combo built specifically to work with both Q and Willow - we will also publicly release parts of these other tools in the near future.

Clone this wiki locally