Working with Templates in Apache Roller 4.0

December 2009

Your first template

In essence, a theme is a set of templates, and a template is composed of HTML and Velocity code. You can make your own templates to access your weblog's data and show this to your visitors in any way you want.

Creating and editing templates

In Apache Roller, you can create, edit, or delete templates via the Frontpage: Templates page. Let's see how to use this wonderful tool to create and edit your own templates!

Scroll down the page and click on the Save button to apply the changes to your new template. Roller will show the Template updated successfully message inside a green box to confirm that your changes were saved:

Now click on the [launch] link under the Link field to open a new tab in your web browser and see your template in action:

You can close this tab now, but leave the Frontpage: Templates window open for the next exercise.

What just happened?

Now you know how to create your own templates! Although the previous example is very simple, you can use it as a starting point to create very complex templates. As I said before, templates are composed of HTML and Velocity code.

The template we wrote in the previous exercise uses a few basic HTML elements, or tags:

HTML Tag

Definition

Tip

<html> , </html>

Defines the start/end of an HTML document.

You must write this tags at the beginning/end of each Roller template.

<body>, </body>

Defines the start/end of an HTML document's body.

All the code you will write for your templates must go between the <body> and </body> tags.

<b>, </b>

Shows text in bold.

Example: <b>Hello</b> shows up as

Hello

</br>

Indicates a line break.

Example: Hello</br>World shows up as

Hello

World

Also, there are some elements from the Velocity Template Language, along with an example from the previous exercise:

Velocity Element

Definition

Example

$model.weblog.name

Shows the name of your weblog.

<b>$model.weblog.name</b> shows up as Ibacsoft's Weblog

$url.absoluteSite

Shows the absolute URL of your weblog

<b>$url.absoluteSite</b> shows up as http://alromero.no-ip.org/roller

These are just some of the basic HTML tags and Velocity elements you'll learn to use for your templates. In the following sections, we'll see some more, along with elements from the Velocity Template Language.

The Velocity template language

All templates in Roller use HTML tags, along with Velocity code. In the next subsections, you'll learn about some of the most widely used Velocity elements in your Roller templates.

Using Velocity macros in your Roller weblog

A macro in Velocity is a set of instructions that generate HTML code based on data from your weblog. They are very helpful when you need to do the same task more than once. In the following exercise, you'll learn to use some macros included in Roller in order to show your weblog data to your visitors.

Time for action – showing your weblog's blogroll and most recent entries

Now you will use the Velocity Template Language to show your weblog's bookmarks (blogroll) in your custom template, along with the most recent entries:

Go to your custom template editing page, and type the following code just above the </body></html> line:

The entire code of your template should look like the following screenshot (the code you have to add is highlighted):

Save your changes and click on your template's [launch] link to open a new tab in your web browser and see how your template will look like:

Now close the results tab to return to the Front Page: Templates window, and add the following lines of code right after the code you added in steps 1 and 2 of this exercise:

</br>And these are the most recent entries in my weblog: </br>#set($entries = $model.weblog.getRecentWeblogEntries("nil", 5))#showWeblogEntryLinksList($entries)

Now your template's code should look like the following screenshot:

Save your changes and click on your template's [launch] link to open a new tab in your web browser and see the results:

You can close this tab now, but leave the Frontpage: Templates window open for the next exercise.

What just happened?

In Velocity, a macro starts with the # character. In the previous exercise, you used two Velocity macros: one to show your weblog's blogroll and the other to show your weblog's most recent entries. There are two Velocity statements implicated in the blogroll macro:

The first line gets the root bookmark folder (represented by "/") and assigns it to the $rootFolder variable. The second line is the showBookmarkLinksList macro, which uses the value in $rootFolder to generate a bookmarks list and show it in your template:

The two false arguments after $rootFolder indicate that we are not using subcategories inside the bookmark links list. If you want more information about these arguments, check the Roller template guide included in the Roller installation.

The first line gets the 5 most recent entries from your weblog and assigns the result to $entries. The "nil" parameter specifies that Roller must get the five most recent entries from all categories. If you want to get the most recent entries from a specific category, just replace "nil" with the name of that category.

The next line is the showWeblogEntryLinksList macro, which uses all the entries included in $entries to generate a list with links:

Summary

In this article, you learned how to create and edit your first template in Roller.

Specifically, we covered:

What is a template, and how to create/edit a custom template with Roller's admin interface

Alerts & Offers

Series & Level

We understand your time is important. Uniquely amongst the major publishers, we seek to develop and publish the broadest range of learning and information products on each technology. Every Packt product delivers a specific learning pathway, broadly defined by the Series type. This structured approach enables you to select the pathway which best suits your knowledge level, learning style and task objectives.

Learning

As a new user, these step-by-step tutorial guides will give you all the practical skills necessary to become competent and efficient.

Beginner's Guide

Friendly, informal tutorials that provide a practical introduction using examples, activities, and challenges.

Essentials

Fast paced, concentrated introductions showing the quickest way to put the tool to work in the real world.

Cookbook

A collection of practical self-contained recipes that all users of the technology will find useful for building more powerful and reliable systems.

Blueprints

Guides you through the most common types of project you'll encounter, giving you end-to-end guidance on how to build your specific solution quickly and reliably.

Mastering

Take your skills to the next level with advanced tutorials that will give you confidence to master the tool's most powerful features.

Starting

Accessible to readers adopting the topic, these titles get you into the tool or technology so that you can become an effective user.

Progressing

Building on core skills you already have, these titles share solutions and expertise so you become a highly productive power user.