Customising/Themes/Differences between Smarty and Dwoo

From Mahara Wiki
Jump to: navigation, search

Mahara 1.2 uses Dwoo instead of Smarty, as its templating engine.  While there is considerable compatibility between the two engines, there are some things that will need to be changed in existing templates.

Note that after 1.2, we will more and more move to Dwoo native syntax, rather than using the "Smarty compatible" syntax, but we'll keep backwards compatibility for 1.3 at least.


In Smarty, {cycle} arguments don't need to be quoted. In Dwoo, they must be.  For example, {cycle values=r0,r1} works in Smarty, but must be changed to {cycle values='r0,r1} in Dwoo.


Insert is used in Smarty to insert the return value of a function call, and skip caching.  Eg {insert name="messages"} would call the php function insert_messages, and insert what it returned into the resulting template.

In Dwoo, this should be done using a native php call {insert_messages} and to bypass caching, be wrapped inside {dynamic} tags, like {dynamic}{insert_messages}{/dynamic}

Use of "data" when including templates

Both Smarty and Dwoo support including templates from within other templates, using {include}, and both support passing data between templates, using {include something='something'}.  However, if you pass a variable called "data" in Dwoo, it will overwrite the existing data, because of naming collision.  Therefore {include file='something.tpl' innerdata=$foo} must be used instead.


In some places in Mahara 1.1, we were using {section} instead of Loops.  This is really not properly compatible with Dwoo, it makes much more sense to just switch to a loop instead.