[pdoPage] Как загружать постоянно 1ую страницу?
Здравствуйте.
У pdoPage есть такая особенность: когда используешь загрузку по кнопке, то он при обновлении страницы загружает контент с той страницы, на которой остановились. Я понимаю, что это довольно удобно для пользователя, однако на одном проекте такую штуку хотелось бы отключить. Возможно ли это сделать не трогая непосредственно сниппет или JSник?
Решение проблемы
Спасибо Ярославу за плагин!
У pdoPage есть такая особенность: когда используешь загрузку по кнопке, то он при обновлении страницы загружает контент с той страницы, на которой остановились. Я понимаю, что это довольно удобно для пользователя, однако на одном проекте такую штуку хотелось бы отключить. Возможно ли это сделать не трогая непосредственно сниппет или JSник?
Решение проблемы
Спасибо Ярославу за плагин!
Поблагодарить автора
Отправить деньги
Комментарии: 9
Вообще, правильнее бы для такой задачи все-таки редактировать js.
Но можно попробовать вклинить на событие загрузки/переключения страницы свой принудительный скролл до верха страницы:
Но можно попробовать вклинить на событие загрузки/переключения страницы свой принудительный скролл до верха страницы:
$('html, body').animate({
scrollTop: $('html').offset().top
}, 0 );
Спасибо. Ток я либо не пойму, как это поможет в моей ситуации, либо это в моей ситуации не поможет.
Попробую пояснить чётче. Мне нужно, чтобы при вызове сниппета pdoPage всегда загружалась первая страница результатов (параметр &page). Сейчас же он (параметр &page) переопределяется значением из $_GET['page']. А значение $_GET['page'] в свою очередь сменяется при переключении страницы, даже кнопкой "Загрузить ещё". Следовательно если пару раз тыкнуть "Загрузить ещё", а потом рефрешнуть страницу, то сниппет pdoPage подгрузит результаты начиная со страницы, на которой мы остановились, не подгружая при этом более новые записи. А постраничной навигации нигде нет, только кнопка "Загрузить ещё". В итоге имеем пользователя в недоумении: «Какого хрена пропали сегодняшние новости на главной странице?!»…
Попробую пояснить чётче. Мне нужно, чтобы при вызове сниппета pdoPage всегда загружалась первая страница результатов (параметр &page). Сейчас же он (параметр &page) переопределяется значением из $_GET['page']. А значение $_GET['page'] в свою очередь сменяется при переключении страницы, даже кнопкой "Загрузить ещё". Следовательно если пару раз тыкнуть "Загрузить ещё", а потом рефрешнуть страницу, то сниппет pdoPage подгрузит результаты начиная со страницы, на которой мы остановились, не подгружая при этом более новые записи. А постраничной навигации нигде нет, только кнопка "Загрузить ещё". В итоге имеем пользователя в недоумении: «Какого хрена пропали сегодняшние новости на главной странице?!»…
Благодарю, но это не то. Меня устраивает вариант лишь с кнопкой. И то, по приближению достижения оной я сделал, чтобы на неё кликало автоматом, ибо из коробки по скроллу с горизонтальной прокруткой не работает (не знаю, работает ли с вертикальной). Похоже только подменять стандартный pdopage.js, без этого никак, да? Либо сниппет pdoPage, что ещё хуже.
Была у меня такая ситуация. Решил её маленьким плагином.
<?php
$page = $modx->sanitizeString($_GET['page']);
if ($page != null) {
$pageIdTo = (int)$modx->resource->get('id');
$site = $modx->makeUrl($pageIdTo, "", "", "full");
return $modx->sendRedirect($site);
}
При обновлении страницы он уберёт get параметры и загрузится первая страница. В событиях должна стоять галочка «OnWebPagePrerender»
Супер! Спасибо, друг! Решение подменой pdopage.js отменяется. Твой вариант куда приятнее! :)
Хотя в том случае была возможность назначить свой JSник определённым сниппетам pdoPage, а этот задевает все. :) Можно сделать проверку по id, но чёт не то. Более проще хотелось бы, чтоли. Тем не менее спасибо за вариант решения!
До меня дошло, что можно ж назначить сниппету параметр &pageVarKey=`page_hor`, а плагин сделать вот таким:
<?php
$page = $modx->sanitizeString($_GET['page_hor']);
if( $page != null )
{
$pageIdTo = (int)$modx->resource->get('id');
$site = $modx->makeUrl($pageIdTo, "", "", "full");
$modx->sendRedirect($site);
}
Решил путём подмены стандартного pdopage.js.
Кому интересно, метод pdoPage.Hash надо заменить на вот такой:
Кому интересно, метод pdoPage.Hash надо заменить на вот такой:
pdoPage.Hash = {
get: function() {
if( typeof window.pdoPage_params === 'undefined' )
{
window.pdoPage_params = {};
}
return window.pdoPage_params;
},
set: function(vars) {
window.pdoPage_params = vars;
},
add: function(key, val) {
var hash = this.get();
hash[key] = val;
this.set(hash);
},
remove: function(key) {
var hash = this.get();
delete hash[key];
this.set(hash);
},
clear: function() {
this.set({});
},
};
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.