Žádný komplexní framework se nehodí pro jednoduché weby. Výhody se totiž projeví až od určité míry složitosti webové aplikace. V opačném případě práci spíš komplikuje.

Nette je framework, který se výborně hodí i pro tvorbu statických stránek. Ano, čtete dobře! Obyčejných statických stránek. Pojďme se na to podívat.

Upozornění: Článek se týká velmi staré alpha verze Nette Framework, současná syntaxe je jiná.

Vezměme si jednoduchou stránku homepage.en.html:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title id="_title">Welcome!</title>
</head>

<body>
  <div id="menu">
	<ul>
	  <li><a href="...">Products</a></li>
	  <li><a href="...">Testimonials</a></li>
	  <li><a href="...">FAQ</a></li>
	  <li><a href="...">About us</a></li>
	</ul>
  </div> <!-- /menu -->

  <div id="breadcrumbs">
	<a href="./">Home</a> &gt; Products
  </div>

  <div id="main">
	<h1>Welcome!</h1>

	<p>Lorem ipsum dollar sit.</p>
  </div> <!-- /main -->

  <div id="footer">
	<p>All rights reserved.</p>
  </div>
</body>
</html>

Jednotlivé stránky v rámci jednoho serveru se hodně podobají. Liší se sice v textu titulku, hlavním obsahu, ale mají stejné (či podobné) hlavičky, patičky atd. Jak jsem zmiňoval dříve, primární zásada Nette zní Nic nepsat dvakrát. Tak si ukažme v praxi, jak bez dvojího psaní vytvoříme stránku „kontakty“:

Soubor contacts.en.html:

<?nette extends="homepage"?>

<title id="_title">Contacts</title>

<body>
<div id="breadcrumbs">
  <a href="./">Home</a> &gt; Contacts
</div>

<div id="main">
  <h1>Contacts</h1>

  <p>Duane Dibley, <i>director</i></p>
</div>
</body>

Prvním řádkem Nette oznámíme, že tato stránka je potomkem stránky homepage. Ano, jde přesně o tentýž mechanismus, jako když dědíme třídy. Prostě Objektově Orientovaný Webdesign. A následují prvky, které chceme přepsat, stejně jako když predefinováváme metody v OOP. Rozhodující je identifikátor id. Prvek se stejným id přepíše prvek rodičovský.

Volitelným atributem override lze navíc upřesnit, jestli se bude dědit jen element samotný (a obsah zůstane nezměněn), nebo naopak jen vnitřní obsah elementu, nebo obojí (což je výchozí stav).

Všimněte si, že <title> má jako identifikátor uvedeno _title. Zavináč Podtržítko nám říká, že atribut id se ve výsledném HTML nezobrazí. Tedy zbude jen <title>Contacts</title>.

Dále v souboru contacts vidíte značky <body>. Protože nemají id, tak se při zpracování ignorují. Zde slouží jen jako ukázka, že ve zděděné stránce můžete použít i doplňující kód, pokud vám to kupříkladu zpříjemní editaci ve WYSIWYG editorech (například přilinkováním CSS).

Za zmínku také stojí ono en v názvech obou souborů. Jde o určení jazyka. Pokud při dědění neexistuje předchůdce v požadovaném jazyce, použije se podle preferencí jiný. Což skýtá řadu dalších obrovských výhod. Stačí překládat jen stránky skutečně obsahující text, a to jen jednou. Také chybějící překlad lze doplnit kdykoliv později (výsledná stránka pak bude přeložena až na malou část).

O tom, jak tento prostý trik zjednodušší správu webů (multijazyčných obzvlášť) snad ani nemusím psát.

Dokáže tohle váš framework?

Pro snadné ladění takovýchto stránek je připraven jednoduchý prohlížeč. Jako parametr dostane jméno stránky, poskládá ji a pustí na výstup (tedy editujete zděděný soubor a v prohlížeči sledujete výsledek).

Pokud na začátek každé takovéto stránky přidáme jednořádkový PHP skript, který spustí onen prohlížecí mechanismus na prováděný soubor, mohu takové stránky nahrát naostro na server a statický web je na světě. Není to paráda?

Již brzy se pokusíme statickým stránkám vdechnout život. Mechanismus dědění tak získá nový netušený rozměr.