Doxia Sitetools - Site Renderer

The Site Renderer handles the rendering of sites, assembling a common site template (also called a skin) with a collection of documents.

Documents can be dynamically generated with Doxia Sink API, like Maven reports, or simply read from static files written in markup supported by Doxia Parsers, eventually processed by Velocity if their file names end in .vm.

Doxia Site Skins

A default site template is included (see default-site.vm), but other templates can be used at will, either as a standalone template or packaged in a skin artifact.

Maven team provides a collection of skins for projects use.

Some documentation is available on how to create a new skin.

Velocity processing

Site and documents with file names ending in .vm are processed by Velocity.

The Velocity context contains some variables related to rendering context that you can use:

Variable Type Description
alignedFileName String Deprecated: use alignedFilePath.
alignedFilePath String The file path of the (HTML) document being rendered, relative to the document being rendered.
decoration SiteModel Deprecated: use site.
currentFileName String Deprecated: use currentFilePath.
currentFilePath String The file path of the (HTML) document being rendered, relative to the site root.
doxiaSiteRendererVersion String The version of the Doxia Site Renderer in use.
locale Locale The locale for the document being rendered.
publishDate Date An optional hardcoded publish date that has been set programmatically.
relativePath String The path to the site root from the document being rendered.
site SiteModel This is a model that represents the data in your site.xml.
supportedLocales List<Locale> The list of locales that the site will contain.

There are also some tools for general use:

Variable Type Description
PathTool PathTool
StringUtils StringUtils
plexus PlexusContainer

Additionally, there are Velocity Generic Tools populated with the site locale, the site model's date format, and site renderer's resource bundle:

Variable Type Description
alternator AlternatorTool Deprecated: use CSS3 nth-child(even/odd) selectors or #if($foreach.index % 2). For creating alternators to easily alternate over a set of values.
class ClassTool For simplifying reflective lookup of information about classes and their fields, methods and constructors.
context ContextTool For convenient access to context data and metadata.
convert ConversionTool Deprecated: use NumberTool for numbers formatting/parsing, DateTool for date/time formatting/parsing, or CollectionTool for toStrings(). For converting String values to richer object Types.
date ComparisonDateTool For manipulating, formatting, and comparing dates.
display DisplayTool For controlling display of references (e.g., truncating values, "pretty printing" lists, and displaying alternates when a reference is null).
esc EscapeTool For common escaping needs in Velocity templates (e.g. escaping html, xml, javascript etc.).
field FieldTool For (easy) access to static fields in a class, such as string constants.
link LinkTool For creating and manipulating URIs and URLs. The API for this tool is designed to closely resemble that of the VelocityView tool of the same name.
loop LoopTool A convenience tool to use with #foreach loops. It wraps a list with a custom iterator to provide greater control, allowing loops to end early, skip ahead and more.
math MathTool For performing math functions.
number NumberTool For formatting and converting numbers.
render RenderTool To evaluate and render arbitrary strings of VTL, including recursive rendering.
text ResourceTool For simplified access to resource bundles for internationalization or other dynamic content needs.
sorter SortTool Deprecated: use CollectionTool sort methods. Used to sort collections (or arrays, iterators, etc) on any arbitary set of properties exposed by the objects contained within the collection.
xml XmlTool For reading/navigating XML files. This uses dom4j under the covers and provides complete XPath support.

If you intend to use custom Velocity tools, add them to the Maven Site Plugin's dependency list and make sure that they have a bundled configuration file in /META-INF/maven/site-tools.xml.

See DefaultSiteRenderer.createToolManagedVelocityContext(...) source for more details and the tools usage summary.

Maven Site Plugin

When doxia-site-renderer is used by maven-site-plugin, the following template properties are defined:

Variable Type Description
inputEncoding String
outputEncoding String
project MavenProject The current project.
project properties String Properties defined in POM are directly available.

See AbstractSiteRenderingMojo.createSiteRenderingContext(...) source for more details.

Site Template

When Velocity is processing the site template (be it from skin or local template), there are a few complementary variables available that give access to information taken from document being merged into the template:

Variable Type Description
authors List<String> A list of authors from the source document.
bodyContent String HTML body content of the Doxia generated output.
documentDate String The date specified in the source document: semantics has to be chosen by document writer (document creation date, or document last modification date, or ...), and format is not enforced.
headContent String HTML head content of the Doxia generated output.
shortTitle String The title of the document, excluding the project or site name.
title String The title of the document, including the project or site name.
docRenderingContext RenderingContext (since 1.8) The document rendering context.

See DefaultSiteRenderer.createSiteTemplateVelocityContext(...) source for more details.