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
В 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  

×