Как в page.tpl.php получить номер последней страницы пейджера

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

Аватар пользователя sirko89 sirko89 9 декабря 2015 в 15:38

Заметил проблему, что когда кто-то открывает ноду сайта, например site.ru/node/111?page=120, она открывается без проблем даже в случае если нода содержит всего одну страницу, то есть даже когда пейджера как такового там вообще нет. Такая же ситуация наблюдается и в случае когда указать значение номера страницы (параметр "page"), превышающее номер последней станицы ноды. В результате, в индекс попадают страницы с идентичным содержимым, но с разными значениями параметров в адресах. Надеюсь понятно описал. Так вот, хотелось бы осуществлять проверку на корректность указанного значения параметра "page" в адресе страницы. И в случае если значение больше чем количество страниц ноды, то отправлять пользователя на страницу 404, то есть сообщать, что такая страница не существует. Также такое наблюдается и в views.
Подскажите, пожалуйста, как узнать последний номер страницы в пейждере. Зная его, можно буде сравнивать его значение с значением параметра "page" указанным в ссылке.
Надеюсь на Вашу помощь.

Комментарии

Аватар пользователя sirko89 sirko89 9 декабря 2015 в 15:49

Есть вариант узнать с базы количество комментариев к определенной ноде и поделить его на значение переменной $comments_per_page, так я смогу узнать количество страниц, но этот способ подойдет только для нод. Знаю что должно быть более простое решение через pager, которое сможет работь и в нодах и в views. Вот в этом и надеюсь на Вашу помощь.

Аватар пользователя mbaev mbaev 9 декабря 2015 в 16:49

Страницы попадают в индекс, если есть ссылки на эти страницы. Другими словами, если у вас нигде не прописаны ссылки на страницы с ?page=999, то они и не попадут в индекс поисковиков.

Вы также можете прописать на любой странице ?asd=asd или что-то подобное и у вас страница отобразиться корректно. В данном случае ?page=999 ничем не отличается от ?asd=asd просто белеберда, которую Друпал любезно "пропускает мимо ушей".