Ajax Náhrada Titlu stránky

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
knyttl
Člen | 196
+
0
-

Ahoj,

jde nějak triviálním způsobem udělat, aby při ajax invalidaci stránky se i podle toho přegenerovával title? Je zřejmé, že v titlu div se snippetem být nemůže a než to začnu prasit, tak bych raději věděl, jak to řeší ostatní :-)

Díky

mkoubik
Člen | 728
+
0
-

Asi si budeš muset na nette.success navázat vlastní funkci, která bude tahat title z payloadu a pak podle něj přepisovat document.title.

ic
Člen | 430
+
0
-

Nic takového jsem sice neřešil, ale napadá mě…
použít manuální payload a kromě samotného obsahu html poslat i setTitle

if ($this->isAjax()) {
	$this->payload->setTitle = json_encode('nadpis');
	$this->sendPayload();
.
.
.

a pro onu setTitle si vytvořit funkci v javascriptu

.
.
.
if (payload.setTitle) {
	document.title = payload.setTitle;
}
.
.
.

Pro prozkoumání toho co se při invalidaci snippetu děje poslouží Firebug je tam taky nějaký json ve kterém je celý obsah html, ale přesně už nevím. Tak prostě tohle by se vypsalo jako payload a přidal by se ještě jeden pro title a javascriptová funkce, který by se o tohle postarala je už pak snadná.

knyttl
Člen | 196
+
0
-

ic napsal(a):

Nic takového jsem sice neřešil, ale napadá mě…
použít manuální payload a kromě samotného obsahu html poslat i setTitle

if ($this->isAjax()) {
	$this->payload->setTitle = json_encode('nadpis');
	$this->sendPayload();
.
.
.

a pro onu setTitle si vytvořit funkci v javascriptu

.
.
.
if (payload.setTitle) {
	document.title = payload.setTitle;
}
.
.
.

Pro prozkoumání toho co se při invalidaci snippetu děje poslouží Firebug je tam taky nějaký json ve kterém je celý obsah html, ale přesně už nevím. Tak prostě tohle by se vypsalo jako payload a přidal by se ještě jeden pro title a javascriptová funkce, který by se o tohle postarala je už pak snadná.

Přesně tak nějak jsem si to představoval, jen jsem si říkal, že by tohle mělo jít v Nette nějak líp. Jakože pokud mám v layoutu:

<title>{include #title}</title>

Tak extrahovat to přímo z toho není úplně triviální – musím to dělat ještě někde nějak zvlášť (duplicitně).

Mimo to, úplně nevím (to se možná pletu), zda je takhle triviální ke snippetům přikládat i takovýhle payload.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Payload přikládat lze, snippety jsou vpodstatě jen $this->payload->snippets = ....

knyttl
Člen | 196
+
0
-

vojtech.dobes napsal(a):

Payload přikládat lze, snippety jsou vpodstatě jen $this->payload->snippets = ....

Jasné.

Každopádně teda vůbec netuším, jak extrahovat ten title z šablon. Kdyby bylo možné nějak přiřadit snippet k titlu, třeba něco jako:

<title n:snippet>{include #title}</title>
powercz
Člen | 12
+
0
-

Co např. použít:

{snippet title title}{$title}{/snippet}
knyttl
Člen | 196
+
0
-

Kůůůůl, tohle by se určitě mělo dopsat do dokumentace.

ic
Člen | 430
+
0
-

knyttl napsal(a):

Kůůůůl, tohle by se určitě mělo dopsat do dokumentace.

ale ideálně i s poznámkou, že je to validní až od HTML5, do té doby nemohlo být id v title elementu

Patrik Votoček
Člen | 2221
+
0
-

pekelnik napsal(a):

HTML 5 History API :)

Tohle je sice hezke ale prohlizece to ignoruji…

knyttl
Člen | 196
+
0
-

Patrik Votoček napsal(a):

pekelnik napsal(a):

HTML 5 History API :)

Tohle je sice hezke ale prohlizece to ignoruji…

Já tohle tedy normálně používám, podle mě to prohlížeče neignorují, nicméně to neřeší problém se snippety.

Patrik Votoček
Člen | 2221
+
0
-

možná jsem měl napsat že myslím konkřétně 2hý parametrl metody pushState což je právě title který se tu řeší.

Nicméně je možné že už tomu je jinak.

Filip Procházka
Moderator | 4668
+
0
-

Patriku, kdyby jsi dával na Webexpo pozor, tak Jakub říkal, že většina prohlížečů ho nějakým způsobem ignoruje. Tohle všem řeší knihovny (myslím že i history.js) pomocí nahrazení <title><head>

Patrik Votoček
Člen | 2221
+
0
-

Filipe: kdyby jsi četl pořádně tak víš že o tom já se nepřu! Tady není řeč o knihovně která to umí (např. tebou zmiňovaný history.js). Ale o nativní součásti ECMAScriptu 5. Kde jak sám říkáš je to ignorováno. :-)

tany
Člen | 31
+
0
-

Neřineslo by to spíše více problémů s kompatibilitou ? Rozšíření jquery.nette.success mi přijde jako lepší (a i elegantně jednoduchá) cesta, jak naučit javascript+nette cokoli.

peterpp
Člen | 9
+
0
-

ic napsal(a):

knyttl napsal(a):

Kůůůůl, tohle by se určitě mělo dopsat do dokumentace.

ale ideálně i s poznámkou, že je to validní až od HTML5, do té doby nemohlo být id v title elementu

A este s poznamkou, ze zmena <title> nemusi byt povolena. Napr. na Androide to hadze vynimku, ktoru je potrebne osetrit (testovane na verzii 2.3.3). Na iOS funguje pekne. Diky.

Editoval peterpp (17. 7. 2012 20:33)