Обратная нумерация страниц (reverse pagination). Как?

Главные вкладки

Аватар пользователя r25 r25 21 августа 2007 в 20:32

Здравствуйте!
Есть сайт на Друпале, с несколькими тысячами нод.
Все замечательно, только удручает одна вещь: порядок сортировки (разбивки) на страницы, т.е. как это выглядит:
1, 2 , 4 , 5 >>следующая.
Т.е. новые страницы имеют наименьший номер в разбивке, что достаточно глупо, поскольку поисковикам приходится переиндексировать все главные страницы, после добавления только 1 статьи.
Вопрос такой: может кто-то патчил как-то pager.inc или использовал какой-либо модуль, чтобы нумерация шла в обратном порядке?
Заранее спасибо!

Комментарии

Аватар пользователя edhel edhel 21 августа 2007 в 20:42

Вы хотите, чтобы новые ноды помещались на последние страницы? А как юзеры их будут искать??

Если используется views, то просто надо поменять порядок сортировки на обратный...

Аватар пользователя edhel edhel 21 августа 2007 в 20:57

98 - это страница с самыми новыми материалами? А смысл? Всё равно при добавлении новой ноды все страницы поменяются, сдвиг всё равно произойдет везде...

Аватар пользователя r25 r25 21 августа 2007 в 21:06

да, 98 - это страница с самыми новыми..
сдвиг произойдет только в границах 98-й страницы, все остальные (те, что меньше 98 - 97, 96, 95 и т.д. останутся неизменными).
А вот по-дефолту у Друпала ситуация как раз такая, что добавление одной статьи ведет к сдвигу всех страниц.

Аватар пользователя edhel edhel 21 августа 2007 в 21:38

Вроде все циферки в pager-е выводятся функцией theme_pager_list. Значит в теме надо перекрыть эту функцию и там где выводится циферка с номером страницы — пофиксить: выводить не просто $i, а $quantity - $i +1. Остальное просто copy&paste из функции theme_pager_list.

ЗЫ: Но поисковики имхо тут всё-таки не причем)

Аватар пользователя r25 r25 23 августа 2007 в 18:54

ну, название функций мы то знаем, может у кого-то есть готовое решение? Wink
не верю, что с такой проблемой никто не сталкивался.

Аватар пользователя logicsun logicsun 16 сентября 2009 в 2:59

Тема актуальная, между прочим.

Еще хочеться заметить, что просто вывод страниц в обратном порядке это еще не все.
View должен именно так разбить на страницы, чтобы на странице с самым большим номером оказался самый свежий материал.

Решение пока не нашел тоже.
Если кто в курсе как это делаеться, киньте ссылку или напишите пожалуйста.

Аватар пользователя ramhasanov ramhasanov 26 августа 2012 в 15:30

Я нашел исчерпывающее решение проблемы поисковой оптимизации при реверсивной пагинации в этой статье http://help.blox.ru/latest/?part_backward . Правда, там оно применяется для другой CMS, но перенести на Drupal не составит труда.

Аватар пользователя nulay nulay 7 ноября 2015 в 20:10

Я иногда очень сильно ленюсь писать модули - хотя оно и лучше - и вот простое решение в блок впихиваем это включаем в блоке фул хтмл, кстате css можете убрать некоторый код js тоже - он просто красивости вставляет, мои теги типо view-id-anekdots меняете на свои. Во вьювс меняете направление сортировки на обратную и получаете примерно как на http://imix.by/anekdots Кстате работает в любом друпале и думаю что в не друпале тоже.

<style>
.view-id-anekdots.view-display-id-page_1 .pager-next a, .view-id-anekdots.view-display-id-page_1 .pager-previous a{
   font-size:large;
}
.view-id-anekdots.view-display-id-page_1 .item-list .pager li.pager-item{
   border: 1px solid #e6e6e6;
   border-radius: 7px;
}
.view-id-anekdots.view-display-id-page_1 .pager-current {
    font-size: larger;
    font-style: italic;
    font-weight: 600;
    color:white;
    background-color: #64a281;
    border: 1px solid #e6e6e6;
    pointer-events: none;
    border-radius: 7px;
}
</style>

<script>
if(window.location.search==''){
//отключаем показ содержимого
$('body').css('display','none');
//редерект на последнюю страницу
jQuery(function(){
if(document.location.href)
document.location.href=$('.view-id-anekdots.view-display-id-page_1').find('.pager-last.last a').attr('href');
});
}else{
jQuery(function(){
//переворачиваем пагинатор
var ul1=jQuery('.view-id-anekdots.view-display-id-page_1').find('ul.pager');
ul1.find('li').each(function(id,el){ul1.prepend($(el));});
//меняем текс в пагинаторе
jQuery('.view-id-anekdots.view-display-id-page_1 .pager-last a').text(" « ");
jQuery('.view-id-anekdots.view-display-id-page_1 .pager-next a').text(" ← ");
jQuery('.view-id-anekdots.view-display-id-page_1 .pager-previous a').text(" → ");

var linf=jQuery('.view-id-anekdots.view-display-id-page_1 .pager-first a');
linf.text(" » ");
//меняем первую ссылку в пагинаторе
linf.attr('href',linf.attr('href')+'?page=0');
})
}
</script>