Скроллит страницу вверх при ajax пагинации pdoPage
Добрый день!
Ребята, столкнулся с такой проблемой — при выводе товаров miniShop2 через pdoPage с Ajax пагинацией, ajax пагинация работает, но страница скроллится на самый верх. Код вызова такой:
Ребята, столкнулся с такой проблемой — при выводе товаров miniShop2 через pdoPage с Ajax пагинацией, ajax пагинация работает, но страница скроллится на самый верх. Код вызова такой:
<div id="pdopage" class="list-layout products-area active">
<div class="rows">
<ul>
[[!pdoPage? &element=`msProducts`
&limit=`1` &ajaxMode=`default`
&tplPageWrapper=`@INLINE <div class="pagination"><ul>[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul></div>`
&tplPageFirst=`@INLINE <li class="prev"><a href="[[+href]]">Первая</a></li>`
&tplPageLast=`@INLINE <li class="next"><a href="[[+href]]">Последняя</a></li>`
&tplPagePrev=`@INLINE <li><a href="[[+href]]"><i class="fa fa-long-arrow-left"></i></a></li>`
&tplPageNext=`@INLINE <li class="control"><a href="[[+href]]"><i class="fa fa-long-arrow-right"></i></a></li>`
&tplPageSkip=`@INLINE <li>...</li>`
&tplPageFirstEmpty=`@INLINE <li class="prev"><a>Первая</a></li>`
&tplPageLastEmpty=`@INLINE <li class="next"><a>Последняя</a></li>`
&tplPagePrevEmpty=`@INLINE <li><a><i class="fa fa-long-arrow-left"></i></a></li>`
&tplPageNextEmpty=`@INLINE <li><a><i class="fa fa-long-arrow-right"></i></a></li>`
]]
</ul>
</div>
[[!+page.nav]]
</div>
Причем пробовал разные варианты и rows после - и т.д. ajax работает, но скроллит вверх страницы. Подскажите, в чем может быть проблема, в какой стороне копать?
Решение:Вызываем в шаблоне такой скрипт:
<script type="text/javascript">
pdoPage.callbacks['before'] = function(config) {$('html, body').stop().animate({scrollLeft: 0, scrollTop:$('#pdopage').offset().top}, 200);};
pdoPage.callbacks['after'] = function(config) {$('html, body').stop().animate({scrollLeft: 0, scrollTop:$('#pdopage').offset().top}, 200);};
</script>
Я не знаю насколько это правильной код, но работает :)
#pdopage — это ID элемента, до которого нужно скроллить страницу
200 — скорость прокрутки
Комментарии: 11
Это нормальное поведение.
Обычным людям неудобно читать новую страницу снизу вверх, поэтому скрипт её прокручивает в начало элемента.
Обычным людям неудобно читать новую страницу снизу вверх, поэтому скрипт её прокручивает в начало элемента.
Спасибо за ответ. Василий, подскажите, а есть возможность оставить скролл только до DIV'а с id=«pdopage» и т.п., а не до самого верха страницы? Такая логика есть в скрипте или необходимо вносить изменения?
Почитай документацию
Чтобы убрать всё можно сделать просто вот так:
Чтобы убрать всё можно сделать просто вот так:
pdoPage.callbacks['before'] = function(config) {};
pdoPage.callbacks['after'] = function(config) {};
Огромное спасибо! Т.к. я ничего не понимаю в программировании, то данные раздел документации я просто упустил :)
Вдруг какому-нибудь чайнику вроде меня это пригодится, делается это вот так:
#pdopage — это ID элемента, до которого нужно скроллить страницу
200 — скорость прокрутки
Вдруг какому-нибудь чайнику вроде меня это пригодится, делается это вот так:
<script type="text/javascript">
pdoPage.callbacks['before'] = function(config) {$('html, body').stop().animate({scrollLeft: 0, scrollTop:$('#pdopage').offset().top}, 200);};
pdoPage.callbacks['after'] = function(config) {$('html, body').stop().animate({scrollLeft: 0, scrollTop:$('#pdopage').offset().top}, 200);};
</script>
Я не знаю насколько это правильной код, но работает :)#pdopage — это ID элемента, до которого нужно скроллить страницу
200 — скорость прокрутки
Слушай а у меня после написания данного кода перестал перезагружать страницы. может быть ты сталкивался с этим??
Не совсем понял вопрос, что значит перестал перезагружать? В AJAX вся фишка в том, что контент подгружается без обновления страницы…
Ну получается следующий эффект nikandlc.bget.ru/news. Буду держать без изменений что бы вы посмотрели!
А сам pdoPage как вызываете?
<section id="blog">
<div class="container">
<div class="row">
<!-- === TITLE === -->
<div class="section-title-left col-lg-5 col-md-5 col-sm-5 col-xs-12">
<h2>Blog posts</h2>
</div>
<div class="section-subtitle section-subtitle-right col-lg-7 col-md-7 col-sm-7 col-xs-12">
It has roots in a piece of classical Latin literraturre
</div>
</div>
<!-- === BLOG GRID === -->
<!-- === BLOG ITEM === -->
<div id="pdopage">
<div class="row blog-twocol" id="rows">
[[!pdoPage?
&parents=`8`
&limit=`4`
&ajaxMode=`default`
&tpl=`ListBlogPageTpl`
&includeTVs=`image-blog`
&pageNavVar=`page.nav.blog`
&cache=`1`
&ajaxElemRows=`row blog-twocol`
]]
</div>
[[!+page.nav.blog]]
</div>
</div>
</section>
<script type="text/javascript">
pdoPage.callbacks['before'] = function(config) {$('html, body').stop().animate({scrollLeft: 0, scrollTop:$('#pdopage').offset().top}, 200);};
pdoPage.callbacks['after'] = function(config) {$('html, body').stop().animate({scrollLeft: 0, scrollTop:$('#pdopage').offset().top}, 200);};
</script>
ВОТ ТАК.&ajaxElemRows=`row blog-twocol` МЕНЯЙ НЕ МЕНЯЙ, НИ ЧЕГО НЕ ПРОИСХОДИТ
Без вызова скрипта с callback пагинация работает?
&ajaxElemRows=`row` попробуйте так, либо сделайте rows, как по умолчанию задано
&ajaxElemRows=`row` попробуйте так, либо сделайте rows, как по умолчанию задано
Все равно не работает. Пусть будет с перезагрузкой(( С аяксом он как то не корректно работает. Там проблема с шаблоном который я купил в темефорест. У меня на странице портфолио тоже ни чего не работало. Я думаю все равно нужно настройки делать, а я пока js учу, не могу ни чего сам делать не понимаю. Через 1-1,5 месяца может быть что то и буду подгонять сам
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.