Русский English Deutsch Українська Қазақша

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

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

Вы не вошли.

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

Knopik
Участник
Откуда: ufa
Здесь с 2009-10-14
Сообщений: 342
Рейтинг :   59 
Сайт

Навигация по сайту без перезагрузки страницы аля 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 07:57:23)

Вне форума

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

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

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

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


Linkum
В ТОП без фильтров и банов - Оптимизм.

Вне форума

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

Knopik
Участник
Откуда: ufa
Здесь с 2009-10-14
Сообщений: 342
Рейтинг :   59 
Сайт

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

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

Вне форума

#4 2011-06-07 10: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 14:43:00

Knopik
Участник
Откуда: ufa
Здесь с 2009-10-14
Сообщений: 342
Рейтинг :   59 
Сайт

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 17:11:13

Knopik
Участник
Откуда: ufa
Здесь с 2009-10-14
Сообщений: 342
Рейтинг :   59 
Сайт

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

Wolverine пишет:

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

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

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB 1.5.11
Модифицировал Visman

[ Сгенерировано за 0.025 сек, 7 запросов выполнено - Использовано памяти: 539.45 Кбайт (Пик: 560.45 Кбайт) ]