A web template system is a kind of "View subsystem" in a Model-View-Controller (MVC or similar) design pattern to separate presentation from content, on dynamic web page production. A web template system is characterized by:
- Template engine: the software, it processes input, transforming into web pages. It have two typical entities on input:
- Template language standards: the language of the recipe.

The main use of template systems is to separate content from presentation on web design, and to the massive production of web pages.
Motivations and typical use
Websites often require regular content updates, and standardization of appearance.
A news website, for example, needs to be daily updated. Each news item will be contextualized by a standard presentation (page layout, structure, etc.). A typical strategy to automate this standardization is:
- choose a web template system to maintain the website;
- group news items into sets, with different presentation needs;
- specify the "presentation standards" through web templates, for each set of news;
- specify a content resource to generate or update the content of each news item.
The idea behind the "template method" is to separate content (data) from presentation (data representation), and to separate business-logic from presentation-logic. It have many advantages in using:
- Ease of design change
- Ease of interface localization
- Possibility to work separately on design and code by different people at one and the same time
- Etc.
Kinds of template systems
There are many software packages and commercial solutions of web templates and template engines, but they also can be grouped in template systems.
The architecture of this systems, into a client-server reference model, is the main divion criteria. Although the use of diverse modern web cache strategies, architectures can be characterized.
About system attributes and other classification criteria:
- Many template systems are a component of a system or framework. They are reffered as the "systems template system".
- Many template systems have options for change (plug) the template language or for change the template engine. They not reffered here.
- Public or not: if the source codes of the template engine are open, or if the template language is a "open definition" or standard; it is a important attribute.
Outside server systems

Web template on this context can viewed as a ready-made web design, used to mass-produce "cookie cutter" websites for rapid deployment.
Usually a "simple template" will include most of the source files necessary for further customizing the template using most modern WYSIWYG editors such as Macromedia Dreamweaver, BlueFish, Amaya or FrontPage, or in plain text editors such as Notepad or VIM.
On Macromedia Dreamweaver the item may also include a graphical template created in Adobe Photoshop or Macromedia Fireworks MX making it easy to edit or customise graphics and images.
A FrontPage web template is one used only with Microsoft's FrontPage software. One of the more unique features of FrontPage is that it has built in support for automated and easy to use web templates. The main distinction between these templates and other universal HTML templates is that FrontPage templates include an automatic navigation system that creates animated buttons for pages that have been added by the user, and creates an advanced multi-level navigation system on the fly using the buttons and the structure of the web site. FrontPage templates also commonly include FrontPage themes in place of CSS styles.
A Flash web template uses Macromedia Flash to create visually appealing sites. Flash sites make use of visual effects employed by Flash. Flash is also used for many website intros.
System label/name | Plataform/editor | Notes |
---|---|---|
BlueFish | ||
Amaya | ||
Flash | Macromedia | Flash authoring. |
FrontPage | Microsoft | HTML authoring. |
Dreamweaver | Macromedia | HTML authoring. |
Server-side system

Old systems:
- Server Side Includes (historically important for web aplications).
- Preprocessors and macro languages, adapted for web use.
A lot of template systems are descripbed here on wikipedia:
System label/name | Plataform/framework | Notes |
---|---|---|
CheetahTemplate | Python | Public. |
Chip | PHP | Public. |
Kid | Python | |
Django | Python | Use the "Django template language". |
FreeMarker | Java | Public. |
StringTemplate | Python | Public. |
Smarty | PHP | Public. |
Vignette | Proprietary. | Commercial solution. |
Topsite | Python | Public. |
WebObjects | Java | Use the WebObjects Builder as engine. |
VlibTemplate | PHP | |
XSLT (standard language) | Any with a XSLT parser | Standard. |
Technically, the methodology of embedding programming languages within HTML (or XML, etc.), used in many "server-side included script languages" are also templates.
System label/name | Notes |
---|---|
Active Perl | Public. |
ColdFusion (CFM) | Proprietary. |
PHP | Public. |
PerlScript | Public. |
JavaServer Pages (JSP) | Public, Java platform. |
Active Server Pages (ASP) | Proprietary (Microsoft platform). See also: VB, Javascript, etc. extensions for ASP. |
Distributed systems

The more simple form are transclusions (HTML frames). In other cases it need Dynamic web pages to run.
Examples:
History
Is difficult to be precise about "template system beginnings" or chronology, because it started only after the "widespread development of web pages", and there are a lot of parallel developments. Context and dates of the "web beginnings":
HTTP protocol has been in use by the Web since 1990, HTML, as standard, since 1996. The web browsers explosion started with 1993's Mosaic.
Web templates, as "web designers necessity", started with the HTML and web browsers popularization. After this, different kinds of template systems was dominated the web template scenery:
- Outside server systems: at the middle of 1990s. The main "necessity" in this first times of the web, was for static pages production. Many independent software and HTML editors adopted a variation of static web template.
- Server-side systems: a widespread use was after middle of 1990s.
- The first use was able with the Common Gateway Interface (for dynamic page generation), stable in the 1993's. Perhaps the first rudimentary server-side web templates was on typical Unix web servers, for AWK (plugged on CGI) report generator, or a M4 template.
- Server Side Includes (a primitive template system) pointed a more direct way to deal with server-side scripts, at the web servers.
- At final 1990s and beginning 2000s, with the growing of on-line and e-commerce systems, and popularization of web portals (with your CMS), the use of server-side template systems growed and domined the "template system scenery".
The high diversity of "template languages" (as a kind of "sub-language" of the CMS or the server-side programming languages), pointed to the need for a "template standard language". The matureness of XSLT and standardization of XQuery, promises, for near future, a kind of convergence.