Based in Omaha, NE, USA
Snow geese taking off from a shining marsh at dawn in the Rainwater Basin of Nebraska

Web template: Definition, History and Examples

Limited-time savings

Huge Price Drop and Savings!

Great news for Omaha and Nebraska small businesses. Because we have cut our labor costs, every new website with up to 5 pages plus a contact page is now just $300, one time. You get a custom design built by real people you can call, not a template factory, and most sites are ready in 3 to 5 days. Your site is mobile-friendly, has a working contact form and search-ready page titles and descriptions, and comes with a free SSL certificate. Hosting starts at $129 a year for a non-CMS site or $149 a year for WordPress, with daily backups included. Our family team has been building websites in Omaha for over 20 years. Choose what you need in the shopping cart below, call us at 402-813-4034, or send a message with the contact form and we will get started right away.

Get my $300 websiteor call 402-813-4034

A web template is a file with a fixed page layout, written in HTML (HyperText Markup Language), that leaves empty spots for content. A template engine fills those spots with data, so one template can make many pages.

History of Web template

Creator: No single creator is named in the Wikipedia article. Year: 2014.

Wikipedia describes early server-side templating as software adapted for the web. The first tools were preprocessors and macro languages. They ran on the Common Gateway Interface (CGI), a method that lets a web server run programs. Developers used them to generate dynamic pages from templates. The Wikipedia article gives no dates for these early tools.

The next step was direct execution in extension modules. The first example named is Server Side Includes (SSI). SSI places directives inside HTML comments. The server reads each directive and inserts the result before the page reaches the browser. The Apache HTTP Server documents SSI in its mod_include module, which evaluates these directives.

HTML editors also used templates. FrontPage and Dreamweaver are named as editors with template sub-systems. Editors used templates to produce static pages. The article calls these ready-made designs. They were used to mass-produce cookie-cutter websites for rapid deployment, with themes in place of CSS (Cascading Style Sheets) styles.

The W3C (World Wide Web Consortium) published HTML5 as a Recommendation on 28 October 2014. The WHATWG (Web Hypertext Application Technology Working Group) maintains the HTML Living Standard. That standard defines a template element. The element holds markup that does not render when the page loads. A script can copy it into the page later, so the browser needs no server-side engine for it.

Static site generators also use templates. Wikipedia lists Jekyll with Liquid and Ruby, Hugo with Go templates, and Pelican with Jinja2 and Python. Each one turns plain text files into static web pages. Hosted builders such as Wix also provide template-based systems. Users make pages through a graphical interface, without writing programs.

Changelog and latest update

The W3C publication history lists the HTML5 Candidate Recommendation on 17 December 2012. The Recommendation followed on 28 October 2014. The W3C marks that Recommendation as retired on 27 March 2018. These dates show the path of the HTML5 standard that page templates use.

MDN (Mozilla Developer Network) lists the template element as available across browsers since November 2015. MDN labels the element with Baseline status. The element holds HTML that is not rendered when the page loads. A script can add its content to the page later.

The Django documentation says that support for loading template partials was added in Django 6.0. A partial is a named fragment of a template. The documentation states that a loaded partial behaves like a regular Template object. It contains only the partial content, so a view can render one fragment.

The Jinja documentation lists version 3.1.6 as the newest entry in its change list. The page describes Jinja as a templating engine for Python. Its documentation shows the BSD-3-Clause License. Jinja is one of the template engines named in the Wikipedia article.

The Apache HTTP Server tutorial on Server Side Includes covers version 2.4. It shows how the echo directive prints the server date. The tutorial also explains that browsers ignore SSI directives when SSI is off. The directives sit inside HTML comments, so a page still displays without the server step.

Latest update: HTML Living Standard, template element (section 4.12.3), 2026-10-12

The WHATWG lists the HTML Living Standard as last updated on 12 October 2026. Section 4.12.3 defines the template element. The section says a template holds HTML that is not rendered when the page loads, and a script can add it later. The section also advises against client-side XSLT (Extensible Stylesheet Language Transformations) in browsers, because browser XSLT code is highly susceptible to memory safety vulnerabilities.

Usage examples

A web template has two parts. The first part is the fixed layout of the page. The second part is a set of placeholders. A template engine reads the template, fills each placeholder with data, and sends the finished page. The examples show five common forms: the HTML template element with a script, a Django template, a Jinja template in Python, and an Apache SSI include. Each example is a short fragment. The Django and Jinja examples need their packages installed first. The SSI example needs SSI enabled on the Apache server.

HTML template element
<template id="card">
  <div class="card">
    <h2 class="title"></h2>
  </div>
</template>

This markup defines a reusable card. The template element keeps the card out of the page until a script adds it. The empty h2 element with the class title is the placeholder that the script fills. The browser does not show the template contents when the page loads.

Fill the template with script
const t = document.getElementById("card");
const copy = t.content.cloneNode(true);
copy.querySelector(".title").textContent = "Plans";
document.body.appendChild(copy);

This script finds the card template and copies its content. It sets the title placeholder to the text Plans. Then it adds the copy to the end of the page body. The original template stays unchanged, so the script can copy it again for another card.

Django template
<h1>{{ page_title }}</h1>
{% for item in items %}
  <p>{{ item.name }}</p>
{% endfor %}

The double braces mark a variable that Django replaces with data from the view. The for tag repeats the paragraph once for each item in the list. The Django template language uses these tags and variables. The Django documentation describes this syntax under Templates.

Jinja template in Python
from jinja2 import Environment
from jinja2 import FileSystemLoader
env = Environment(
    loader=FileSystemLoader("templates"))
tpl = env.get_template("page.html")
print(tpl.render(title="Home"))

The code loads templates from the templates folder. It renders the page.html file with the title value Home. The render call returns the finished HTML as a string. The page.html file needs a title placeholder to receive this value. Jinja uses the same idea of placeholders as Django.

Apache SSI include
<!--#include virtual="/includes/header.html" -->
<main>
  <h1>Page title</h1>
</main>
<!--#include virtual="/includes/footer.html" -->

The include directives place a header file at the top of the page and a footer file at the bottom. The server inserts both files before it sends the page. The directive sits in an HTML comment, so a browser ignores it when SSI is off. The header and footer files act as shared template parts.

References

These sources are outside Websnoogie and were checked on 2026-10-12.

  • Web template system

    Wikipedia, Wikimedia Foundation

    Encyclopedia article on web template systems. It covers the template engine, the template and content resources, server-side and client-side systems, static site generators and the early CGI and SSI tools.

  • <template>: The HTML content template element

    MDN Web Docs, Mozilla

    Reference page for the template element. It describes what the element holds, how a script uses it, and the browser support date. It lists the Baseline status for the element and the year it became supported across browsers.

  • HTML Living Standard, section 4.12.3 The template element

    WHATWG

    Specification text for the template element in the HTML Living Standard. It defines the element as a mechanism for holding HTML that is not rendered at load. It also covers XSLT and XPath interaction with templates.

  • HTML5 publication history

    W3C

    W3C table of dates for the HTML5 specification. It lists the Candidate Recommendation of 17 December 2012, the Recommendation of 28 October 2014 and the retired status dated 27 March 2018.

  • Apache HTTP Server Tutorial: Server Side Includes

    Apache Software Foundation

    Tutorial for SSI on Apache HTTP Server version 2.4. It explains the directive syntax, the include and echo directives, how to enable SSI and how the server evaluates the directives before it sends the page.

  • Templates, Django documentation

    Django Software Foundation

    Documentation for the Django template language. It covers variables, tags, filters, template loading and template partials, including the partial support added for the DjangoTemplates backend in Django 6.0.

  • Jinja Documentation (3.1.x)

    Pallets Projects

    Documentation for Jinja, a templating engine for Python. It covers the API, template syntax, loaders, autoescaping and the change list, which ends with version 3.1.6 in the 3.1.x series.

One layout, many pages

When nobody checks a template, one wrong phone number repeats on every page built from it. A template holds the shared parts of a site, so a small mistake spreads fast. We keep the shared layout clean, and we check it before it goes live. Then one fix updates each page that uses it.

A move to a new host can break a template in quiet ways. Forms, menus and page links may stop working after the switch. Ordinary-size WordPress sites change hosts at no charge. Anything bigger costs $199, paid once. We check each page once the move is done.

Our doors stay open seven days a week, 7 am through 10 pm. Dial 402-813-4034 and give us your site address and a rough page count. Bring your questions about forms, menus and page links too. We will tell you whether your move is free or costs $199 one time. You can also ask how a new layout would look on your phone.

Next, pick the way that suits you. Ring 402-813-4034 today, or read about the $300 website and what it includes.

See the $300 websiteor call 402-813-4034

Get started with Websnoogie

A smiling couple at a sunlit office desk reviewing a colorful website on a large monitor

A family company in Omaha

Rod, Tami, and their team have built websites, content, and provided SEO services (internet marketing) for over 20 years. You call us, you talk to us. Most new websites are ready in 3 to 5 days, and our hosting runs at 99.999% uptime.

  • Best of Omaha B2B winner, 2021 to 2025
  • BBB accredited with an A+ rating
  • Small businesses, nonprofits and professionals

Sign up now

Due today$449

Secure checkout through PayPal

More info on our products

Contact us now!

Prefer to talk? Call 402-813-4034 or email staff@websnoogie.com. We are open every day, 7 am to 10 pm.