Změna <title> při AJAXovém požadavku

Pokud bychom chtěli při AJAXovém požadavku změnit titulek stránky (obsah značky <title> v hlavičce), máme na výběr dvě možnosti. Jednak můžeme využít javascriptové History API, konkrétně metodu window.history.pushState() (která nám umožňuje přepisovat historii prohlížení v browseru). Anebo se spokojíme s využitím snippetů.

Od verze Nette 2.0 lze používat atributovou variantu makra {snippet}, čehož využijeme. A jak bude tedy AJAXová změna <title> pomocí snippetů vypadat v praxi?

<title n:snippet="title">{#title|striptags|upper}Default Title{/#}</title>

Invalidace bude stejná jako u jakéhokoliv jiného snippetu:

$this->invalidateControl('title');

V šabloně view pak můžeme pro ukázku implementovat dynamicky se měnící <title>:

<h1 n:block="title">
	{if $presenter->isAjax()}
		Loaded With Ajax
	{else}
		No Ajax Heading
	{/if}
</h1>

Uvedený kód počítá s přilinkovaným obslužným skriptem pro AJAX z doplňků.

Vylepšit tuto stránku