Nesting Templates
GoHT allows you to nest templates into each other. It provides two directives to do this: @render and @children.
@render
To include another template in the current template, you use the @render directive. The @render directive takes the template name and parameters. In the generated Go code it will be replaced with a call to the other templates generated version.
@goht myTemplate() {
%p
The following content comes from another template:
@render otherTemplate()
}Depending on the otherTemplate it might render as:
<p>
The following content comes from another template:
<div class="other">
<p>Some content</p>
</div>
</p>You can also render out content into the other template that has access to the current template scope.
@goht myTemplate() {
- content := "My content"
%p
The following content comes from another template:
@render otherTemplate()
%p= content
}Depending on the otherTemplate it might render as:
<p>
The following content comes from another template:
<div class="other">
<p>Some content</p>
<p>My content</p>
</div>
</p>The <p>My content</p> is rendered into the otherTemplate and has access to the content variable from the calling template. This is possible because the otherTemplate is using the @children directive.
@children
To include content from the calling template in the current template, you use the @children directive. It will be replaced with the content that has been passed to the template from the calling template.
@goht otherTemplate() {
.other
%p Some content
=@children
}When the otherTemplate is called from the myTemplate it might render as:
<div class="other">
<p>Some content</p>
<p>My content</p>
</div>