Перейти к содержимому


Фотография
- - - - -

ajax page load on scroll


Лучший Ответ SmetDenis , 12 February 2014 - 13:02

1) как такую страницу будет читать поисковик? Сможет ли он "скроллить" чтобы прочесть другие страницы?
 

Читать он будет её "как есть", без всякой динамики.

Иногда поисковики конечно выполняют знакомы JS код. Но на скролл я бы не рассчитывал

http://pr-cy.ru/simulator

http://pr-cy.ru/analysis_content

 

но у него прямо под тегом body прописан тег noindex с продублированным меню. Это для чего сделано? Это необходимо?

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

Возможно вам поможет эта литература по SEO

http://forum.jbzoo.c...vizhenie-sajtov

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 3

#1 Almaz

Almaz

Отправлено 12 February 2014 - 06:35

Нашел несколько тем по этому вопросу на этом форуме.
Но самостоятельно реализовать уже написанное пока не получилается.
Решил разобрать все по полкам.
 
1) Во первых, подключаю  jQuery плагин как сказано в теме AJAX фильтр, но подключаю его не в mod_jbzoo_search как указано в теме, а в teaser.php соответсвующего каталога.
 
2) Во вторых, вставляю в код вызова плагина как сказано в теме убрать пагинацию и сделать jquery подгрузку.
 
3) В третьих, корректирую js-фикс высоты колонок как сказано в теме Ajax загрузка страниц.
 
План верный?
 
 
 
По первому пункту: 

$zoo = App::getInstance('zoo');
$zoo->document->addScript('/templates/favoritmoto/custom/js/jquery-ias.min.js');

данный код, вставленный в teaser.php не дает результатов.
Пришлось вставлять через theme.config.php yootheme шаблона.

$this['asset']->addFile('js', 'js:jquery-ias.min.js');

 
 
По второму пункту:
 
Ошибка:

Uncaught TypeError: Cannot call method 'Deferred' of undefined jquery-ias.min.js:13

Вот здесь я и застрял пока. Количество данной ошибки увеличивается с каждым scroll'ом.


Сообщение отредактировал Almaz: 12 February 2014 - 06:43

  • 0

#2 Almaz

Almaz

Отправлено 12 February 2014 - 09:04

Решение проблемы нашел. Данный Sliapy скрипт http://www.fieg.nl/i...a-jquery-plugin

выдает вышеназванную ошибку.

Содержимое файла jquery-ias.min необходимо заменить на (автор i001)

(function(b){b.ias=function(d){var m=b.extend({},b.ias.defaults,d);var c=new b.ias.util();var j=new b.ias.paging();var h=(m.history?new b.ias.history():false);var f=this;r();function r(){j.onChangePage(function(x,v,w){if(h){h.setPage(x,w)}m.onPageChange.call(this,x,w,v)});s();if(h&&h.havePage()){q();pageNum=h.getPage();c.forceScrollTop(function(){if(pageNum>1){l(pageNum);curTreshold=p(true);b("html,body").scrollTop(curTreshold)}else{s()}})}return f}function s(){n();b(window).scroll(g)}function g(){scrTop=b(window).scrollTop();wndHeight=b(window).height();curScrOffset=scrTop+wndHeight;if(curScrOffset>=p()){t(curScrOffset)}}function q(){b(window).unbind("scroll",g)}function n(){b(m.pagination).hide()}function p(v){el=b(m.container).find(m.item).last();if(el.size()==0){return 0}treshold=el.offset().top+el.height();if(!v){treshold+=m.tresholdMargin}return treshold}function t(w,v){urlNextPage=b(m.next).attr("href");if(!urlNextPage){return q()}j.pushPages(w,urlNextPage);q();o();e(urlNextPage,function(y,x){result=m.onLoadItems.call(this,x);if(result!==false){b(x).hide();curLastItem=b(m.container).find(m.item).last();curLastItem.after(x);b(x).fadeIn()}b(m.pagination).replaceWith(b(m.pagination,y));k();s();if(v){v.call(this)}})}function e(w,x){var v=[];b.get(w,null,function(y){b(m.container,y).find(m.item).each(function(){v.push(this)});if(x){x.call(this,y,v)}},"html")}function l(v){curTreshold=p(true);if(curTreshold>0){t(curTreshold,function(){q();if((j.getCurPageNum(curTreshold)+1)<v){l(v);b("html,body").animate({scrollTop:curTreshold},400,"swing")}else{b("html,body").animate({scrollTop:curTreshold},1000,"swing");s()}})}}function u(){loader=b(".ias_loader");if(loader.size()==0){loader=b("<div class='ias_loader'><img src='"+m.loader+"'/></div>");loader.hide()}return loader}function o(v){loader=u();el=b(m.container).find(m.item).last();el.after(loader);loader.fadeIn()}function k(){loader=u();loader.remove()}};function a(c){if(window.console&&window.console.log){window.console.log(c)}}b.ias.defaults={container:"#container",item:".item",pagination:"#pagination",next:".next",tresholdMargin:0,history:true,onPageChange:function(){},onLoadItems:function(){},};b.ias.util=function(){var d=false;var f=false;var c=this;e();function e(){b(window).load(function(){d=true})}this.forceScrollTop=function(g){b("html,body").scrollTop(0);if(!f){if(!d){setTimeout(function(){c.forceScrollTop(g)},1)}else{g.call();f=true}}}};b.ias.paging=function(){var e=[[0,document.location.toString()]];var h=function(){};var d=1;j();function j(){b(window).scroll(g)}function g(){scrTop=b(window).scrollTop();wndHeight=b(window).height();curScrOffset=scrTop+wndHeight;curPageNum=c(curScrOffset);curPagebreak=f(curScrOffset);if(d!=curPageNum){h.call(this,curPageNum,curPagebreak[0],curPagebreak[1])}d=curPageNum}function c(k){for(i=(e.length-1);i>0;i--){if(k>e[i][0]){return i+1}}return 1}this.getCurPageNum=function(k){return c(k)};function f(k){for(i=(e.length-1);i>=0;i--){if(k>e[i][0]){return e[i]}}return null}this.onChangePage=function(k){h=k};this.pushPages=function(k,l){e.push([k,l])}};b.ias.history=function(){var d=false;var c=false;e();function e(){c=!!(window.history&&history.pushState&&history.replaceState);c=false}this.setPage=function(g,f){this.updateState({page:g},"",f)};this.havePage=function(){return(this.getState()!=false)};this.getPage=function(){if(this.havePage()){stateObj=this.getState();return stateObj.page}return 1};this.getState=function(){if(c){stateObj=history.state;if(stateObj&&stateObj.ias){return stateObj.ias}}else{
	haveState=(window.location.hash.substring(0,7)=="#/page/");
	if(haveState){
		pageNum=parseInt(window.location.hash.replace("#/page/",""));
		return{page:pageNum}
	}
}
	return false
};
	this.updateState=function(g,h,f){
		if(d){
			this.replaceState(g,h,f)
		}else{
			this.pushState(g,h,f)
		}
	};
	this.pushState=function(g,h,f){
		if(c){
			history.pushState({ias:g},h,f)
		}else{
			hash=(g.page>0?"#/page/"+g.page:"");window.location.hash=hash
		}
		d=true
	};
	this.replaceState=function(g,h,f){
		if(c){history.replaceState({ias:g},h,f)}else{this.pushState(g,h,f)}}}})(jQuery);

И все заработало!


Сообщение отредактировал Almaz: 12 February 2014 - 09:04

  • 0

#3 Almaz

Almaz

Отправлено 12 February 2014 - 09:38

Теперь вопросы:

 

1) как такую страницу будет читать поисковик?
Сможет ли он "скроллить" чтобы прочесть другие страницы?

2) Cheren-dow на своем сайте успешно реализовал данную функцию http://studia-design...shi-raboty.html,

но у него прямо под тегом body прописан тег noindex с продублированным меню. Это для чего сделано? Это необходимо?


  • 0

#4 SmetDenis

SmetDenis

Отправлено 12 February 2014 - 13:02   Лучший Ответ

1) как такую страницу будет читать поисковик? Сможет ли он "скроллить" чтобы прочесть другие страницы?
 

Читать он будет её "как есть", без всякой динамики.

Иногда поисковики конечно выполняют знакомы JS код. Но на скролл я бы не рассчитывал

http://pr-cy.ru/simulator

http://pr-cy.ru/analysis_content

 

но у него прямо под тегом body прописан тег noindex с продублированным меню. Это для чего сделано? Это необходимо?

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

Возможно вам поможет эта литература по SEO

http://forum.jbzoo.c...vizhenie-sajtov


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!