Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Here's

...

a

...

simple

...

example

...

so

...

you

...

can

...

see

...

how

...

the

...

various

...

sub-template

...

pieces

...

fit

...

together.

...

This

...

example

...

generates

...

an

...

HTML

...

file

...

from

...

two

...

templates.

...

First,

...

there's

...

a

...

sub-template

...

that

...

generates

...

an

...

HTML

...

header:

...

Code Block
languagehtml/xml
<%@ CodeTemplate Language="C#" TargetLanguage="HTML" %>
<%@ Property Name="Title" Type="System.String" Optional="False" Category="Options" Description="Page title." %>
<%@ Property Name="CharSet" Type="System.String" Optional="False" Default="windows-1252" Category="Options" Description="Character set for the page." %>
<%@ Property Name="IncludeMeta" Type="System.Boolean" Default="True" Optional="False" Category="Options" Description="Include meta tags." %>
<html>
<head>
<% if (IncludeMeta) { %>
<meta http-equiv="Content-Type" content="text/html; charset=<%= CharSet %>">
<% } %>
<title><%= Title %></title>
</head>

Next,

...

the

...

main

...

template

...

generates

...

the

...

body

...

of

...

the

...

HTML

...

file.

...

Note

...

that

...

it

...

uses

...

the

...

sub-template

...

to

...

generate

...

the

...

header:

...

Code Block
languagehtml/xml
<%@ CodeTemplate Language="C#" TargetLanguage="HTML" %>
<%@ Property Name="Title" Type="System.String" Optional="False" Category="Options" Description="Page title." %>
<%@ Property Name="Placeholder" Type="System.String" Optional="True" Category="Options" Description="Main placeholder text." %>
<%@ Register Name="Header" Template="Header.cst" MergeProperties="True" ExcludeProperties="IncludeMeta" %>
<% OutputHeader(); %>
<body>
<h1><%= Title %></h1>
<p><%= Placeholder %></p>
</body>
</html>
<script runat="template">
public void OutputHeader()
{
   Header header = this.Create<Header>();
   // include the meta tag
   header.IncludeMeta = true;
   // copy all properties with matching name and type to the sub-template instance
   this.CopyPropertiesTo(header);
   // render the sub-template to the current output stream
   header.Render(this.Response);
}
</script>

When

...

you

...

open

...

the

...

master

...

template,

...

the

...

property

...

sheet

...

shows

...

the

...

Title

...

and

...

Placeholder

...

properties

...

defined

...

in

...

the

...

master

...

template,

...

as

...

well

...

as

...

the

...

CharSet

...

property

...

defined

...

in

...

the

...

sub-template

...

(because

...

of

...

the

...

MergeProperties

...

attribute),

...

but

...

not

...

the

...

IncludeMeta

...

property

...

(because

...

of

...

the

...

ExcludeProperties

...

attribute):

...

The

...

template's

...

output

...

seamlessly

...

merges

...

the

...

output

...

of

...

the

...

sub-template

...

and

...

the

...

output

...

of

...

the

...

main

...

template:

Image Added

Code Block
languagehtml/xml
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>My Web Page</title>
</head>
<body>
<h1>My Web Page</h1>
<p>Lorem Ipsit</p>
</body>
</html>