Sunucu tarafı **web şablonlama sistemi** için temel işlem: Web belgelerini toplu olarak üretmek için içerik (veritabanından) ve "sunum özellikleri" (**web şablonu** ‘nda) (şablon motoru] aracılığıyla birleştirilir.
Web yayıncılığı'ndaki **web şablon sistemi**, web tasarımcılarının ve geliştiricilerin, bir aramanın sonuçları gibi özel web sayfa'larını otomatik oluşturmak için *web şablonları* ile çalışmasına olanak tanır. Bu, dinamik öğeleri web isteği parametrelerine dayalı olarak tanımlarken statik web sayfası öğelerini yeniden kullanır.
Web şablonları statik içeriği destekleyerek temel yapı ve görünüm sağlar. Geliştiriciler içerik yönetim sistemlerinden, Web uygulama iskeletlerinden ve HTML düzenleyicilerinden şablonları kullanabilir.

Genel Bakış
-----------

Bir *web şablonu sistemi* aşağıdakilerden oluşur:

* Şablon motoru: sistemin birincil işleme öğesi;
* *İçerik kaynağı*: ilişkisel veritabanı, XML dosyaları, LDAP dizini ve diğer türden yerel veya ağ bağlantılı veriler gibi çeşitli giriş veri akışı türlerinden herhangi biri;
* *Şablon kaynağı*: *web şablonu* ‘nun şablon dili'ne göre belirtilir;

Şablon ve içerik kaynakları, web belgelerini toplu üretmek için şablon motoru tarafından işlenir ve birleştirilir. Bu makalenin amaçları doğrultusunda web belgeleri, web üzerinden HTTP, HTTPS veya başka bir İnternet protokolü aracılığıyla iletilmek üzere çeşitli çıktı biçimlerinden herhangi birini içerir.

Örnek
-----

Genellikle ilişkisel bir veritabanında tutulan modelle, MVC mimarisinin geri kalan bileşenleri kontrol ve görünümdür. En basit sistemlerde bu ikisi birbirinden ayrılmaz. Bununla birlikte, ilgilerin ayrılması ilkesini benimsemek ilişkileri tamamen ayrıştırabilir.

Örneğin görünüm şablonu şöyle görünebilir:

```
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
   <head><title>Sites</title></head>
   <body><h1 data-xp="title"><!-- placeholder --></h1></body>
</html>

```

Sonra kontrol şablonu görünümü yükler ve ardından bir veritabanından bileşenleri eklemek için adresini XPath kullanır, örneğin:

```
<?php
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->Load('view.html');
$titlenode = $doc->createTextNode("Like this");
$xpath = new DOMXPath($doc);
$xpath->registerNamespace("h", "http://www.w3.org/1999/xhtml"); 
$query = "//h:\*[@data-xp='title']/comment()";
$entries = $xpath->query($query);
foreach ($entries as $entry) {
    $entry->parentNode->replaceChild($titlenode, $entry);
}
echo $doc->saveXML();
?>

```

Şablon sistemleri türleri
-------------------------

Bir web tarayıcısı ve web sunucusu bir istemci-sunucu mimarisidir. Siteler genellikle performansı artırmak için bir web önbelleği de kullanır. Beş şablonlama sistemi türü, yer tutucuları gerçek içerikle değiştirdikleri ve sayfaları bir araya getirdikleri zamana göre sınıflandırılır.

* Sunucu tarafı - çalışma zamanı değişikliği web sunucusunda gerçekleşir
* İstemci tarafı - çalışma zamanı değişimi web tarayıcısında gerçekleşir
* Kenar tarafı - çalışma zamanı değişimi, web sunucusu ile tarayıcı arasındaki bir proxy'de gerçekleşir
* Dış sunucu - statik web sayfaları çevrimdışı üretilir ve web sunucusuna yüklenir; çalışma zamanı ikamesi yoktur
* Dağıtılmış - çalışma zamanı değişimi birden çok sunucuda gerçekleşir

Şablon dilleri şunlar olabilir:

* Gömülü veya olay güdümlü.
* Basit, yinelenebilir, programlanabilir veya karmaşık.
* Bir konsorsiyum tarafından tanımlanmış, özel olarak tanımlanmış veya fiili olarak açık bir uygulama tarafından tanımlanmıştır. Sahiplik, bir spesifikasyonun kararlılığını ve güvenilirliğini etkiler. Bununla birlikte, çoğu yargı alanında, dil belirtimi telif hakkıyla korunamaz, bu nedenle kontrol nadiren mutlaktır.

Şablon motoru kaynak kodu tescilli veya açık kaynak olabilir.

Birçok şablon sistemi, daha büyük bir programlama platformunun veya çerçevesinin bileşenidir. Bunlara "platformun şablon sistemi" denir. Bazı şablon sistemlerinin, farklı bir şablon dili veya motoru değiştirme seçeneği vardır.

Programlama dilleri, örneğin Perl, Ruby, C ve Java yerel olarak veya eklenti kitaplıkları ve modülleri aracılığıyla şablon işlemeyi destekler. JavaServer Sayfaları (JSP), PHP ve Aktif Sunucu Sayfaları (VBScript, JScript veya diğer dillerle ASP) web şablonu motorlarına örnektir. Bu teknolojiler genelde sunucu tarafı şablon oluşturma sistemlerinde kullanılır ancak bir "uç tarafı" proxy'sinde veya statik sayfa oluşturmada kullanılmak üzere uyarlanabilir.

### Statik site oluşturucuları

Statik site oluşturucular, bir statik web sayfası yapmak için markdown ve asciidoc gibi düz metin giriş dosyalarını kullanan motorlardır. Buna örnek olarak Jekyll (Liquid, Ruby), Hugo (Go) şablonları) ve Pelican (Jinja2, Python) dahildir.

### Statik HTML Düzenleyicileri

Dış sunucu şablonu sistem mimarisi.
HTML düzenleyiciler yalnızca statik web sayfası yapmak için genellikle web şablon sistemlerini kullanır. Bunlar, hızlı dağıtım için "çerez kesici" web sitesilerin toplu üretimi için kullanılan hazır bir web tasarımı olarak görülebilir. Ayrıca genellikle Basamaklı Stil Sayfaları (CSS) stilleri yerine temalar içerirler. Genel olarak, şablon dili yalnızca düzenleyicinin yazılımıyla kullanılır.

FrontPage ve Dreamweaver bir zamanlar şablon alt sistemlerine sahip en popüler editörlerdi. Flash web şablonu, görsel olarak etkileşimli siteler oluşturmak için Macromedia Flash kullanır.

Pek çok "sunucu tarafı şablon sistemi", yayınlanan sayfaların statik olduğu sunucuda çıktı sayfaları yayınlama seçeneğine sahiptir. Bu, Vignette gibi içerik yönetim sistem'lerinde yaygındır ancak sunucu dışı üretim olarak kabul edilmez. Çoğu durumda, bu "yayınlama seçeneği" "şablon sistemi" ile karışmaz ve harici yazılım tarafından Wget olarak yapılabilir.

### Sunucu taraflı sistemler

Sunucu tarafı şablon sistemi
İnsanlar, bu görev için uyarlanmış önceden var olan yazılımlara sahip şablonlardan oluşturulan [sunucu tarafı dinamik sayfaları kullanmaya başladı. Bu, web kullanımı için uyarlanmış ve CGI üzerinde çalışan ilk yazılım önişlemcileri ve makro dilleri idi. Daha sonra, basit ama ilgili teknoloji, SSI (en:Server Side Includes) ile başlayan, genişletme modüllerinde yapılan doğrudan yürütmeydi.

Birçok *şablon sistemi* tipik olarak *sunucu tarafı şablon sistemleri* olarak kullanılır:

| Sistem etiketi/adı | Platform/çerçeve | Notlar |
| --- | --- | --- |
| Blade | PHP | Kamu. Laravel'in parçasıdır |
| CheetahTemplate | Python | Kamu. Gömülü karmaşık dil. |
| Django | Python | "Django şablon dili" ‘ni kullanır. |
| FreeMarker | Java | Kamu. |
| Facelets | Jakarta EE | Kamu. Jakarta Server Faces’ın parçasıdır |
| Genshi | Python | Kamu |
| Haml | Ruby veya diğeri | Kamu. |
| Hamlets | Java | Kamu. |
| Jinja2 | Python | Kamu. Gömülü karmaşık dil. |
| Kid | Python |  |
| Lasso | LassoSoft, LLC 4 Mart 2023 tarihinde Wayback Machine sitesinde arşivlendi. | Tescilli. Yorumlayıcılı Programlama dili ve Sunucu |
| Mustache | ActionScript, C++, Clojure, CoffeeScript, ColdFusion, D, Erlang, Fantom programlama dili, Go, Java, sunucu-tarafı JavaScript, Lua, .NET, Objective-C, ooc( programlama dili), Perl, PHP, Python, Ruby, Scala, Tcl | Kamu. |
| Temel Server Side Includes (SSI) | Temel direktifler "standart" belirler. | Gömülü basit dil, `exec` yönergesini hariç tutarsanız. |
| Smarty | PHP | Kamu. Gömülü karmaşık dil. |
| Template Toolkit | Perl | Kamu. Gömülü karmaşık dil. |
| Template Attribute Dili (TAL) | Zope, Python, Java, Perl, PHP, XSLT | Kamu; diğer adıyla Zope Sayfa Şablonları (ZPT); ayrıca bkz. TAL Expression Syntax (TALES), Macro Expansion TAL (METAL) |
| Tiles | Java | Kamu. Çeşitli çerçevelerden (servlet, portlets, struts, spring) birden çok şablon dilini (JSP, Velocity, Freemarker, Mustache) destekler. |
| Thymeleaf | Java | Kamu. |
| Topsite | Python | Kamu. *"2008-02-20 itibarıyla, bu proje artık aktif geliştirme aşamasında değildir."* |
| Twig | PHP |  |
| PHPlib | PHPlib | Kamu. Gömülü yinelenebilir dil. |
| WebMacro | Java | Kamu. Gömülü yinelenebilir dil. |
| WebObjects | Java | Motor olarak WebObjects Builder kullanır. |
| Velocity | Java | Kamu. VTL kullan- Velocity Template Language 4 Mart 2023 tarihinde Wayback Machine sitesinde arşivlendi.. |
| Vinyet | Tescilli. | Ticari çözüm. Gömülü karmaşık dil. |
| XSLT (standart dil) | XSLT ayrıştırıcısı olan herhangi biri | Standart. Olay odaklı programlanabilir dil. |
| XQuery (standard dil) | XQuery ayrıştırıcısı olan herhangi biri | Standard. Gömülü programlanabilir dil. |

Teknik olarak, birçok "sunucu tarafı dahil komut dosyası dillerinde" kullanılan HTML (veya XML, vb.) içine programlama dilleri gömme yöntemi de şablonlardır. Hepsi Gömülü programlanabilir dil’lerdir.

| Sistem etiketi/adı | Notlar |
| --- | --- |
| Aktif Sunucu Sayfaları (ASP) | Tescilli (Microsoft platform). Ayrıca bkz.: VBScript, Javascript, PerlScript, vb. ASP için uzantılar. |
| eRuby | Kamu (Ruby). |
| ColdFusion Markup dili (CFM) | Kamu (Lucee, Railo, OpenBD). Tescilli (Adobe ColdFusion). |
| Jakarta Server Pages (JSP) | Kamu, Jakarta EE. |
| Active Perl | Kamu. |
| PHP | Kamu. |
| OpenACS | Kamu (Tcl). |

Sunucu tarafı şablon motorları olarak kullanılan önişlemciler de vardır. Örnekler:

| Önişlemci | Notlar |
| --- | --- |
| C önişlemcisi | Kamu. Gömülü yinelenebilir dil. |
| M4 | Kamu. Gömülü programlanabilir dil. |

### Uç-taraf sistemleri

Edge-Side şablonu ve dahil etme sistemleri. "Uç taraf", istemci (tarayıcı) ile kaynak sunucu arasındaki boşlukta bulunan web sunucularını ifade eder. Genellikle "ters proxy" sunucuları olarak adlandırılırlar. Bu sunucular genellikle, resimler ve sayfa parçaları gibi içeriği önbelleğe alarak ve bunu tarayıcıya verimli bir şekilde ileterek kaynak sunuculardaki yükü ve trafiği azaltmakla görevlidir.

Temel Uç Tarafı İçeriği (ESI), SSI benzeri bir dildir. İçerik dağıtım ağları için ESI uygulanmıştır. ESI şablon dili, JavaScript ve Ajax kullanan web tarayıcılarında veya bir tarayıcı "eklentisi" aracılığıyla da uygulanabilir.

### İstemci tarafı sistemler

İstemci tarafı ve dağıtılmış (merkezi olmayan) şablon sistemi.
Pek çok web tarayıcısı, verileri XHTML belgesine dönüştüren ve böylece tarayıcının kendisinde şablon işlevi sağlayan bir XSLT stil sayfasını XML verilerine uygulayabilir.  

Diğer sistemler, JavaScript veya başka bir istemci tarafı komut dosyası oluşturma dili kullanarak tarayıcıda şablon işlevselliği uygular, örneğin:

* Mustache şablon sistemi
* Squirrelly 17 Haziran 2018 tarihinde Wayback Machine sitesinde arşivlendi.
* Gidonlar 4 Mart 2023 tarihinde Wayback Machine sitesinde arşivlendi.

### Dağıtık sistemler

En basit biçim kapsamalarıdır (İngilizce: en:Transclusion) (HTML çerçeveleri). Diğer durumlarda dinamik web sayfaları gereklidir.

Örnekler:

* Ajax
* Zengin İnternet uygulaması

Ayrıca bakınız
--------------

|  |  |  |  |  |
| --- | --- | --- | --- | --- |
| Kavramlar:
* Bytecode
* Düzen motoru
* Metin ikame makroları
* Sanal makine
 |       | Standartlar:
* UIML (Kullanıcı Arayüzü İşaretleme Dili)
* XSLT (Genişletilebilir Stil Sayfası Dil Dönüşümleri)
 |       | Yazılım: 
* CodeCharge Stüdyosu
* Jekyll
 |

Kaynakça
--------

1. ↑  "Template engine". phpwact.org wiki. 4 Aralık 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ocak 2013.
2. ↑  MacDonald, Matthew (2015). *Creating a Website: The Missing Manual*. Chapter 8 > Putting the Same Content on Multiple Pages > Web Templates > Note box: O'Reilly Media, Inc. ISBN 9781491936177. Erişim tarihi: 19 Ocak 2016.
3. ↑  "{{mustache}}". 16 Ekim 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Ekim 2013.
4. ↑  jodyburns. "Topsite Templating System". 20 Ekim 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Ekim 2013.

9. Free ecommerce website themes 4 Mart 2023 tarihinde Wayback Machine sitesinde arşivlendi. MG Technologies Blogs and Information Portal of Website Themes.

Dış bağlantılar
---------------

* JavaScript template libraries 24 Aralık 2014 tarihinde Wayback Machine sitesinde arşivlendi. comparison from 2009
* Enforcing Strict Model–View Separation in Template Engines 8 Şubat 2023 tarihinde Wayback Machine sitesinde arşivlendi.
* A Double-Model Approach to Achieve Effective Model–View Separation in Template Based Web Applications 4 Mart 2023 tarihinde Wayback Machine sitesinde arşivlendi.
* A PHP template engine comparison with graphic charts 4 Mart 2023 tarihinde Wayback Machine sitesinde arşivlendi.
* Comparisons/benchmarks of some Python template-engines and some generic thoughts about template-engines 4 Mart 2023 tarihinde Wayback Machine sitesinde arşivlendi.
* web-mode.el is an emacs major for editing web templates 18 Eylül 2020 tarihinde Wayback Machine sitesinde arşivlendi.