Jump to content
Sign in to follow this  
PaZiTiF

Навигация по сайту

Recommended Posts

Всем доброго времени суток, вот хочу разобраться как работает данная навигация, код взять с kabuljan.af:

var nav = {
	getStaticFiles: function(h){
		if(h){
			if(h.substr(0, 1) == '/') h = h.substr(1);
			var h = h.split('/');
			h = h[0];
			for(var i in navTree) {
				var m = h.match(new RegExp('^' + i, 'i'));
				if(m) return {files: navTree[i].files, i: i, loaded: navTree[i].loaded};
			}
		}
		return {files: []};
	},
	go: function(h, params){
		if(!h) return;

		if(!kj.logged && (h == 'http://kabuljan.af/' || h == '/')) return location.href = '/';

		h = h.replace('http://kabuljan.af', '');
		nav.new_url = h;

		if(!params) params = {};

		if(nav.destroy){
			nav.last_url = {h: h, p: params};
			var ret = nav.destroy(1);
			if(ret == 1) return;
			nav.destroy = null;
		}

		nav.clear();

		if(!params.no_change_link) history.pushState({link:h}, null, h);

		h += (h.indexOf('?') != -1 ? '&' : '?')+'al=-1';

		nav.clean = false;
		nav.static_start = false;
		nav.cont_queue = {};
		nav.init_js = null;
		nav.end = false;

		h += '&rnd_='+(new Date().getTime());

		nav.cur_load_link = h;

		var h_data = nav.getStaticFiles(h);
		if(h_data.files.length > 0){
			nav.static_start = true;
			if(!h_data.loaded){
				stManager.add(h_data.files, function(){
					navTree[h_data.i].loaded = true;
					if(nav.cur_load_link != h) return;
					nav.loaded_st = true;
					for(var i in nav.cont_queue){
						KJ('#'+i).html(nav.cont_queue[i]);
						delete nav.cont_queue[i];
					}
					if(nav.frame_loaded) nav.page_loaded();
				});
			}else nav.loaded_st = true;
		}else nav.loaded_st = true;

		KJ('body').append('<iframe id="navigation_frame"></iframe>');
		KJ('#navigation_frame').attr('src', h);
	},
	clear: function(h){
		if(kj.uid){
			if(cur.attach_all) cur.attach_all.obj = {};
			wallReply.opened_form = 0;
		}
		if(KJ('.photoViewBox').length) Photos.opened = Photos.marking = null;

		//chrome bug fix, destroy ajax request
		if(KJ('#im_frame').length) KJ('#im_frame')[0].contentWindow.stop();

		KJ('#im_frame, .photo_view, .box_pos, .box_info, .vii_box, .zoomWall, .photoViewBox, .titleHtml, #addStyleClass, .like_users_bl, .js_titleRemove, .tag_user_bl, #navigation_frame').remove();
		KJ('body').attr('ondrop', '');
		KJ([window, document]).unbind();
		KJ('.kj_top_button').attr('onClick', '').hide();
		if(KJ('#wiki_wall').length != 0) wiki_wall.close();
		cur.langs = {};
		if(kj.uid && KJ('#query').val().length > 0){
			KJ('.fast_search_bg').hide();
			KJ('#fs_scroll_cont').html('');
			KJ('#query').val('');
		}
		if(window.user_id) user_id = 0;
		cur.Media = {};
		if(cur.wikiOpened) WikiView.destroy();
		if(cur.notifyPad) NotifyPad.hide();
		if(window.MediaObjs) MediaObjs = {};
		cur.EmojiInited = [];

		nav.start_load_st = false;
		nav.loaded_st = false;
		nav.frame_loaded = false;

		voicesPlayer.curVoice = null;
		if(voicesPlayer.playing){
			voicesPlayer.endVoice();
			KJ('#voice_song')[0].pause();
		}
		destroyCur(h);
	},
	frame_data: function(type, data){
		switch(type){
			case 'nav_js':
				eval('(function(){' + data + ';})()');
			break;
			case 'cont':
				data.cont = String(data.cont.replace('</AjaxScript>', '</script>'));
				if(nav.static_start) nav.cont_queue[data.id] = data.cont;
				else KJ('#'+data.id).html(data.cont);
			break;
			case 'static':
				var files = data.split(',');
				nav.static_start = true;
				if(nav.start_load_st) return;
				stManager.add(files, function(){
					nav.static_start = false;
					for(var i in nav.cont_queue){
						KJ('#'+i).html(nav.cont_queue[i]);
						delete nav.cont_queue[i];
					}
					if(nav.init_js){
						eval(nav.init_js);
						nav.init_js = null;
					}
					if(nav.end){
						KJ('#navigation_frame').remove();
						if(nav.loaded_st) nav.page_loaded();
					}
				});
			break;
			case 'init_js':
				//if(nav.static_start) nav.init_js = data;
				//else eval(data);
				nav.init_js = data;
			break;
			case 'end':
				nav.end = true;
				nav.frame_loaded = true;
				if(nav.static_start) return;
				KJ('#navigation_frame').remove();
				if(nav.loaded_st) nav.page_loaded();
			break;
			case 'counts':
				eval(data);
			break;
			case 'runtime':
				if(kj.uid != 11 && kj.uid != 1) return;
				KJ('#runtime').remove();
				KJ('body').append(data);
			break;
		}
	},
	page_loaded: function(){
		KJ.each($('#page script'), function(){
			var src = KJ(this).attr('src');
			if(src){
				src = src.replace('/js/', '');
				stManager._add([src]);
			}else{
				window.eval.apply(window, [KJ(this).html()]);
			}
		});

		if(nav.init_js){
			eval(nav.init_js);
			nav.init_js = null;
		}

		KJ('#navigation_frame').remove();

		topButton();
		KJ('body').css('overflow-y', 'auto').scrollTop(0);
		findInputs();
		initClick();
		if(window.audio_player && !audio_player.pause) audio_player.command('play', {style_only: true});
		cur.lazy.searchImages(1);
		if(nav.resize_win){
			onBodyResize();
			nav.resize_win = null;
		}

		window.scrollTo(0,0);
	}
};

Думаю нужны дополнительные параметры в файле .htaccess и дополнительный код в index.php

Share this post


Link to post
Share on other sites

Для себя делаешь или на продажу? Если для себя могу помочь.

Share this post


Link to post
Share on other sites

Для себя делаешь или на продажу? Если для себя могу помочь.

в лс ответил

Share this post


Link to post
Share on other sites
В 20.08.2016 в 13:58, Mario сказал:

Для себя делаешь или на продажу? Если для себя могу помочь.

Можешь мне подсказать как сделать а то дизайн и функционал сделал а навигацию оставил стандартную vii и статику сделал

  • Downvote 1

Share this post


Link to post
Share on other sites
5 минут назад, PHPSocial сказал:

Можешь мне подсказать как сделать а то дизайн и функционал сделал а навигацию оставил стандартную vii и статику сделал

Что конкретно нужно? 

Share this post


Link to post
Share on other sites
18 минут назад, PHPSocial сказал:

Такая ситуация как у PaZiTiF

 

Ну он мне ситуацию писал в лс, так что я сомневаюсь, что тебе она известна. Там же как и в вк (прежней версии, за эту не знаю), но упрощенно, идут разные варианты ответа в зависимости от переменной al, вот тут при нажатии на кнопку перехода оно создает фрейм в котором получает ответ в js формате и который обрабатывается, по сути это всё тоже самое, что в вии идет после ответа от сервера с параметром ajax = yes (скрин 1), но вместе с скриптом который будет обрабатываться, а не чисто данными для скрипта (новый заголовок, контент и подобное), который уже записан. 

Безымянный.png

Edited by Mario

Share this post


Link to post
Share on other sites
4 минуты назад, Mario сказал:

Ну он мне ситуацию писал в лс, так что я сомневаюсь, что тебе она известна. Там же как и в вк (прежней версии, за эту не знаю), но упрощенно, идут разные варианты ответа в зависимости от переменной al, вот тут при нажатии на кнопку перехода оно создает фрейм в котором получает ответ в js формате и который обрабатывается, по сути это всё тоже самое, что в вии идет после ответа от сервера с параметром ajax = yes (скрин 1), но вместе с скриптом который будет обрабатываться, а не чисто данными для скрипта (новый заголовок, контент и подобное), который уже записан. 

Безымянный.png

 

Я использую сборку андрея там по другому ...

как мне навигацию прикрутить к сборке а общем мобильную версию я скопировал полностью с навигацией и всем функционалом а вот полную не могу 

 

image.png.3a475b28643f1b63333d6c968599b7c0.png

  • Downvote 1

Share this post


Link to post
Share on other sites
9 минут назад, Mario сказал:

Ну он мне ситуацию писал в лс, так что я сомневаюсь, что тебе она известна. Там же как и в вк (прежней версии, за эту не знаю), но упрощенно, идут разные варианты ответа в зависимости от переменной al, вот тут при нажатии на кнопку перехода оно создает фрейм в котором получает ответ в js формате и который обрабатывается, по сути это всё тоже самое, что в вии идет после ответа от сервера с параметром ajax = yes (скрин 1), но вместе с скриптом который будет обрабатываться, а не чисто данными для скрипта (новый заголовок, контент и подобное), который уже записан. 

Безымянный.png

Вот php  я уже все перепробовал но аякс и так не работает с джава кабулджана 

 

image.png.3ba67da16a1eaea38467f99ac8698271.png

  • Downvote 1

Share this post


Link to post
Share on other sites
3 минуты назад, PHPSocial сказал:

 

Я использую сборку андрея там по другому ...

как мне навигацию прикрутить к сборке а общем мобильную версию я скопировал полностью с навигацией и всем функционалом а вот полную не могу 

 

image.png.3a475b28643f1b63333d6c968599b7c0.png

Откуда я знаю что куда прикручивается, он спрашивал за принцип работы, я ему в вк и расписывал, а ставил он так же или нет мне не известно, да и два года прошло 

Share this post


Link to post
Share on other sites
1 минуту назад, PHPSocial сказал:

Вот php  я уже все перепробовал но аякс и так не работает с джава кабулджана 

 

image.png.3ba67da16a1eaea38467f99ac8698271.png

Он так и не будет работать, и я написал почему, это же обычная подгрузка вии.

Share this post


Link to post
Share on other sites
В 02.10.2018 в 14:50, Mario сказал:

Он так и не будет работать, и я написал почему, это же обычная подгрузка вии.

да, тогда давно ваши советы мне помогли разобраться, данный код у меня мб еще где-то остался на пк

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×