Načítání obsahu šablon ajaxem

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

Zdravím.
Lze nějak jednoduše nastavit, aby se dalo přepínat mezi šablony ajaxově?

Myslím hromadně, přes signály by to bylo na hodně dlouho.

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

Nu, nemusí to být vůbec těžké.

  1. Obalit block #content snippetem content.
  2. Do BasePresenteru do metody beforeRender() hodit:
if ($this->isAjax()) {
	$this->invalidateControl('content');
}
  1. Nahodit nette.ajax.js.
  2. Na odkazy naházet CSS třídu ajax nebo, pokud chceš zajaxovat fakt komplet aplikaci, upravit si výchozí ajaxovací selektor. To ale doporučuju jen v případě, že je k dispozici History API, v opačném případě je lepší přechody mezi stránkama neajaxovat.
if ((window.history && history.pushState && window.history.replaceState && !navigator.userAgent.match(/((iPod|iPhone|iPad).+\bOS\s+[1-4]|WebApps\/.+CFNetwork)/))) {
	$.nette.ext('init').linkSelector = 'a';
}
  1. Zprovoznit history extenzi.
  2. A run!
$.nette.init();
tom
Člen | 171
+
0
-

Prosímtě a titulek stránky se mění jak? Použil jsem

<?php
<title n:inner-snippet="title"> ...
a
$this->invalidateControl('title');
?>

ale nejsem si jistý odkud brát ten obsah který se bude přepisovat.

Dík

vojtech.dobes napsal(a):

Nu, nemusí to být vůbec těžké.

  1. Obalit block #content snippetem content.
  2. Do BasePresenteru do metody beforeRender() hodit:
if ($this->isAjax()) {
	$this->invalidateControl('content');
}
  1. Nahodit nette.ajax.js.
  2. Na odkazy naházet CSS třídu ajax nebo, pokud chceš zajaxovat fakt komplet aplikaci, upravit si výchozí ajaxovací selektor. To ale doporučuju jen v případě, že je k dispozici History API, v opačném případě je lepší přechody mezi stránkama neajaxovat.
if ((window.history && history.pushState && window.history.replaceState && !navigator.userAgent.match(/((iPod|iPhone|iPad).+\bOS\s+[1-4]|WebApps\/.+CFNetwork)/))) {
	$.nette.ext('init').linkSelector = 'a';
}
  1. Zprovoznit history extenzi.
  2. A run!
$.nette.init();
Oli
Člen | 1215
+
0
-

titulek ajaxem se mění takhle: https://pla.nette.org/…le-pri-ajaxu