Web template system
From Wikipedia, the free encyclopedia
A Web template system describes the software and methodologies used to produce web pages and web documents for deployment on websites and delivery over the internet. Such systems process web templates, using a template engine. It is a web publishing tool present in Content management systems, Software frameworks, HTML editors, and many other contexts.
This article is part of |
Main:
|
Supplemental: |
Related: |
Contents |
[edit] Overview
A web template system is comprised of:
- A Template engine: the primary processing element of the system;
- Content resource: any of various kinds of input data streams, such as from a relational database, XML files, LDAP directory, and other kinds of local or networked data;
- Template resource: web templates specified according to a Template language;
The template and content resources are processed and combined by the template engine to mass-produce web documents. For purposes of this article, web documents include any of various output formats for transmission over the web via HTTP, or another internet protocol.
[edit] Motivations and typical uses
[edit] Mass-production
Various agencies and organizations use web template systems for mass-production of content when slower production alternatives prove unfeasible.
For an introductory overview, a news website is used as example. Suppose a "static website", where all web pages are static, and build by a web designer, that need to add and update pages every day.
A typical strategy to automate the web-designer's "repetitive work" is:
- choose a web template system to maintain the website;
- group news items with different presentation needs;
- specify the "presentation standards" through web templates, for each group of news;
- specify a content resource to generate or update the content of each news item.
[edit] Style standardization
Websites often require regular content updates, and standardization of appearance. Without a uniform style to browsing and to see different kinds of contents, the reader may be feel lost in the website. Style standardization also is a part of the identity of the website.
The news website example needs to be updated daily. Each news item will be contextualized by a standard presentation (page layout, structure, etc.). The template system automate this standardization and:
- Creates consistency across the site (fonts, navigation, etc.), through the automated use of style sheets, navigation bars, etc.
- Structures pages in a modular, industry-standard fashion familiar to Web users.
- Improves branding, navigation, and search.
- Frees webmasters and web designers to focus on site maintenance and content.
[edit] Separation of concerns
The idea behind the "template method" is to separate content (data model) from presentation (data representation), and to separate business-logic from presentation-logic in a Model-View-Controller (or similar) design pattern.
For the web designer, when each web page comes from a web template, he/she think on a modular web page structured with components that can be modified independently of each other. These components may include a header, footer, global navigation bar, local navigation bar, and content well.
For programmers the template language offer a more restricted logic, only to do presentation adaptations and decisions, and not for do complex (business model) algorithms.
For another people of the "site team", template system frees webmasters to focus on technical maintenance, content suppliers to focus on content, and for all of them more reliability.
Resuming, it have many advantages in using:
- Ease of design change: presentation variations on templates are "content invariant", web designer can update presentation without another preoccupations.
- Ease of interface localization: menus and other presentation standards are ease to uniformize, for users browsign on the site.
- Possibility to work separately on design and code by different people at one and the same time.
[edit] Formal characterization
- See the on Formal treatment supplement. Here a resume.
[edit] Data-flow definition for templates
What can be, precisely, a template? For a formal characterization we can modeling the template system as a dataflow:
- Input data stores: Template, T and Content, C
- Process, P, and its output, R=P(T,C) where R is the resulted web document.
The relations of C,T,P, and R satisfy a minimal set of properties to be characterized (defined) as web template system.
Important conclusions from definitions:
- The simplest "substitution string system" can characterized as template system.
- Template files from languages like XSLT or XQuery are templates, but files like a Perl script, evaluated by a usual Pperl interpreter, that need output instruction like
print
and has no hook notation, are not. - The process can not be arbritrary.
- A pipeline is possible if the content, C, and output, R, are on the same format, like XML: PXSLT(T2, PXQuery(T1,C) )
- The possibility of use sub-templates is a feature for template languages, is not a general characteristic.
[edit] Kinds of template systems
There are many public software and commercial packages promoted as being web templates and template engines, but there are a high diversity of disperse kinds of solutions. To select and group then in a systematic way, the first step is to characterize them as template systems.
A second step is to group and identify main properties of each characterized system:
- The architecture of these systems, into a client-server reference model, is the main divion criteria for group then -- although the use of diverse modern web cache strategies, architectures can be characterized. There are, as illustrated, three groups: Outside server systems, Server-side systems, and Distributed systems.
- Main attributes:
- Template languages may be:
- Embedded or Event-driven.
- Simple, Iterable, Programable, or Complex.
- Specification possession: the standards of the language are controlled by a public or not-public ownership rights. The possession strategy and the ownership indicate the stability and credibility of the specification.
- Template engine possession: it is public or not, indicating if source codes of the template engine are open, or not.
- Template languages may be:
[edit] Outside server systems
Web template on this context produce only static web pages, and can viewed as a ready-made web design, used to mass-produce "cookie cutter" websites for rapid deployment.
HTML editors are the tipical systems using outside server subsystems. They also commonly include themes in place of CSS styles. In general the template language is to be used only with the editor's software.
FrontPage and Dreamweaver are the most popular editors with template sub-system. On Dreamweaver the template tool may also include a graphical template making it easy to edit or customise graphics and images. A Flash web template uses Macromedia Flash to create visually appealing sites.
System label/name | Platform/editor | Notes |
---|---|---|
BlueFish? | ? | ? |
Nvu | Linux/Nvu | HTML authoring. |
Flash | Macromedia | Flash authoring. |
FrontPage | Microsoft | HTML authoring. Embedded iterable language. |
Dreamweaver | Macromedia | HTML authoring. Embedded iterable language. |
Many server-side template systems have the option to publish the output pages on the server, them the published pages be static. It is a commom feature on content management systems, like Vignette. But this does not have to be considered a out-server generation.
In the majority of the cases, this "publish option" not interferes with the template system, and it can be made by external software, as Wget.
[edit] Server-side systems
Server-side dynamic pages began generated by templates with pre-existent software adaptated for this task. This early softwares was the preprocessors and macro languages, adapted for the web use, running on CGI. Next, a simple but relevant technology was the direct execution made on extension modules, started with SSI.
A lot of template systems are typically used as server-side template systems:
Technically, the methodology of embedding programming languages within HTML (or XML, etc.), used in many "server-side included script languages" are also templates. All of them are embedded complex languages.
System label/name | Notes |
---|---|
Active Server Pages (ASP) | Proprietary (Microsoft platform). See also: VBScript, Javascript, PerlScript, etc. extensions for ASP. |
eRuby | Public (Ruby). |
ColdFusion (CFM) | Proprietary. |
JavaServer Pages (JSP) | Public, Java platform. |
Active Perl | Public. |
PHP | Public. |
There are also preprocessors used as server-side template engines. Examples:
Preprocessor | Notes |
---|---|
C preprocessor | Public. Embedded iterable language. |
M4 | Public. Embedded complex language. |
[edit] Distributed systems
The more simple form are transclusions (HTML frames). In other cases it need Dynamic web pages to run.
Examples: