Template code Chunk output
{!-- Any piece of the template encased in {% literal %}{% endliteral %}
  -- tags passes through uninterpreted by the template engine.
  --
  -- The encasing tags are preserved so that the block will survive
  -- intact even after multiple passes through the engine.
  --
  -- So, hiding the {% literal %} tags in HTML comments is recommended.
  --
  -- NB: Literal tags may _not_ be nested.
  --}

<h2>Inside the literal jail:</h2>

<!-- {% literal %} -->

<pre style="border: 2px dotted blue; background-color:lightblue;">

{$these:tags} {$will|onempty(not be processed)}

{!-- comments will pass through to final output --}
{% tagStack %}
{% exec MY_TEMPLATE %}{% endexec %}

{% loop in $list as $item %}{$item}{% onEmpty %}Empty list!{% endloop %}

</pre>

<!-- {% endliteral %} -->



<hr/>



<h2>Now let's see the same code outside the literal jail:</h2>

<pre style="border: 2px dotted blue; background-color:lightblue;">

{$these:tags} {$will|onempty(not be processed)}

{!-- comments will pass through to final output --}
{% tagStack %}
{% exec MY_TEMPLATE %}{% endexec %}

{% loop in $list as $item %}{$item}{% onEmpty %}Empty list!{% endloop %}

</pre>

Theme theme = new Theme();

// fetch template from themes/example.chtml
Chunk html = theme.makeChunk("example");

// Insert business logic here.
// Normally you write a lot of html.set("this","that") calls here.

StreamWriter out = getStreamWriter();
html.render( out );

///// or, return the rendered template as a string
// return html.toString();

<h2>Inside the literal jail:</h2>

<!-- {% literal %} -->

<pre style="border: 2px dotted blue; background-color:lightblue;">

{$these:tags} {$will|onempty(not be processed)}

{!-- comments will pass through to final output --}
{% tagStack %}
{% exec MY_TEMPLATE %}{% endexec %}

{% loop in $list as $item %}{$item}{% onEmpty %}Empty list!{% endloop %}

</pre>

<!-- {% endliteral %} -->



<hr/>



<h2>Now let's see the same code outside the literal jail:</h2>

<pre style="border: 2px dotted blue; background-color:lightblue;">

tags not be processed

Available tags:
$now

[chtml template 'MY_TEMPLATE' not found]<!-- looked in [themes/examples/MY_TEMPLATE.chtml] -->
Empty list!
</pre>


Inside the literal jail:


{$these:tags} {$will|onempty(not be processed)}

{!-- comments will pass through to final output --}
{% tagStack %}
{% exec MY_TEMPLATE %}{% endexec %}

{% loop in $list as $item %}{$item}{% onEmpty %}Empty list!{% endloop %}


Now let's see the same code outside the literal jail:


tags not be processed

Available tags:
$now

[chtml template 'MY_TEMPLATE' not found]
Empty list!