Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2011-06-07 07:56:27

Knopik
Разработчик
Откуда ufa
Зарегистрирован: 2009-10-14
Сообщений: 353
Рейтинг :   62 
Сайт

Навигация по сайту без перезагрузки страницы аля twitter

Сегодня зашел глянуть какие изменения произошли за пол года. Очень понравилась навигация без перезагрузки страницы. Подобное есть уже во многих соц сетях. Захотелось сделать тоже самое. Время было поздно, как то обдумывать все моменты особо не получилось smile

Собственно собрал плагин:

add_act('core', 'test');
function test(){
	global $SUPRESS_TEMPLATE_SHOW;

	register_htmlvar("js", "/templates/sourceworld_ru/siteajax.js");

	if(isset($_REQUEST['notpl'])){
		$SUPRESS_TEMPLATE_SHOW = 1;
	}
}

написал javascript код

nav = {
	ajax: new sack(),
	hash: window.location.hash.substring(1),
	goto: function(goto){
 		 document.getElementById('mainblock').innerHTML='<center><img src="/templates/default/images/loading.gif" alt=""/></center>';
		 this.ajax.requestFile = goto;
		 this.ajax.setVar("notpl", 1);
		 this.ajax.element = 'mainblock';
		 this.ajax.method = 'POST';
		 window.location.hash = "#"+goto.substring(("http://"+window.location.host).length);
		 scroll(0,0);
		 this.ajax.runAJAX();	
	},
	init: function(){		
		if (this.hash != ''){
	 		this.goto(this.hash);
		}
	}
}
window.onload = (function(){nav.init();});

Закинул, в шаблоне навешал на ссылки

onclick="nav.goto(this.href); return false;"

вроде работает. Есть конечно кое какие проблемы, типа "хлебные крошки" не подгружаються, или когда находишся на статической странице при переходе на главную не подгружает стили рейтинга.

Кто нибуть делал что то подобное без вмешательства плагинов, на javascript. Хочу взглянуть, так как мое решение не ахти)

как это всё работает можно взглянуть тут .

Изменено Knopik (2011-06-07 08:57:23)

Не в сети

#2 2011-06-07 10:44:12

KhadeR
Участник
Зарегистрирован: 2009-09-16
Сообщений: 207
Рейтинг :   17 

Re: Навигация по сайту без перезагрузки страницы аля twitter

http://www.infinite-scroll.com/ - 100% решение, интеграция на любой сайт ( jQuery - плагин )

Не в сети

#3 2011-06-07 11:08:46

Knopik
Разработчик
Откуда ufa
Зарегистрирован: 2009-10-14
Сообщений: 353
Рейтинг :   62 
Сайт

Re: Навигация по сайту без перезагрузки страницы аля twitter

KhadeR, спасибо, но это не совсем то)

Не в сети

#4 2011-06-07 11:47:41

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Навигация по сайту без перезагрузки страницы аля twitter

Это все надо решать на уровне движка, который должен диктовать какую-то стратегию поведения для всех плагинов, потому что сейчас к тем же "Хлебным крошкам" нельзя обратиться через AJAX и получить обновленную информацию, одним JS тут нельзя обойтись. Оптимальный вариант это передача движку в AJAX запросе списка плагинов, от которых необходимо вернуть информацию, получаем обратно массив (а не только mainblock) и заменяем id=breadcrumbs -> массив['breadcrumbs'], id=mainblock -> массив['mainblock']. Сейчас получается, что движок один хрен делает все запросы для рендера страницы, а выводит только главную.

Не в сети

#5 2011-06-07 15:43:00

Knopik
Разработчик
Откуда ufa
Зарегистрирован: 2009-10-14
Сообщений: 353
Рейтинг :   62 
Сайт

Re: Навигация по сайту без перезагрузки страницы аля twitter

В принципе в моем случаем можно обойтись добавлением другого main.tpl, в котором оставить только {breadcrumbs}{mainblock}, и подправить код плагина.

add_act('core', 'test');

function test(){
	global $SYSTEM_FLAGS;

	register_htmlvar("js", "/templates/sourceworld_ru/siteajax.js");

	if(isset($_REQUEST['notpl'])){
		$SYSTEM_FLAGS['template.main.name']="main-ajax";
	}
}

Не в сети

#6 2011-09-27 18:11:13

Knopik
Разработчик
Откуда ufa
Зарегистрирован: 2009-10-14
Сообщений: 353
Рейтинг :   62 
Сайт

Re: Навигация по сайту без перезагрузки страницы аля twitter

Wolverine пишет:

Это все надо решать на уровне движка, который должен диктовать какую-то стратегию поведения для всех плагинов, потому что сейчас к тем же "Хлебным крошкам" нельзя обратиться через AJAX и получить обновленную информацию, одним JS тут нельзя обойтись. Оптимальный вариант это передача движку в AJAX запросе списка плагинов, от которых необходимо вернуть информацию, получаем обратно массив (а не только mainblock) и заменяем id=breadcrumbs -> массив['breadcrumbs'], id=mainblock -> массив['mainblock']. Сейчас получается, что движок один хрен делает все запросы для рендера страницы, а выводит только главную.

Пожалуй соглашусь, что то на подобии нужно будет для одной идеи, но сам наверно не реализую

Не в сети

Подвал раздела

Работает на FluxBB