Всем привет!
Ситуация следующая: Есть раздел новостей, на каждой странице по 5 нод. Всё выводиться норм. Всего получается 4 страницы. Адрес последней страницы: /news?page=3.
Но вот если подставить значение page больше чем всего нод показывается пустая страница с пейджером активной последней страницы.
Т.е. по адресу /news?page=4 | /news?page=5 | /news?page=6 и т.д. я вижу пустую активную 4ю страницу.
Вопрос: как сделать что бы по этим адресам была страница 404 not found??
Весь гугл уже перерыл, ничего похожего не нашел...( Может кто сталкивался?
Drupal 7.14, Views 7.x-3.3
Комментарии
делал так:
<?php
/**
* Implements hook_views_pre_render()
*/
function modulename_views_pre_render(&$view) {
if ($view->total_rows && $view->query->offset && $view->query->offset > $view->total_rows) {
drupal_not_found();
}
}
?>
Спасибо! То что нужно!
В таком виде друпал после загрузки страницы ошибки 404 продолжает грузить пустую страницу. Поэтому, полагаю, правильнее будет так:
<?php
/**
* Implements hook_views_pre_render()
*/
function modulename_views_pre_render(&$view) {
if ($view->total_rows && $view->query->offset && $view->query->offset > $view->total_rows) {
drupal_not_found();
exit;
}
}
?>
Нашел косяк в этом хуке. Если на последней странице количество материалов равно максимальному числу для страницы, то при попытке открыть следующую за последней страницу, открывается пустая страница с пагинатором - таким, как как на последней странице. Есть идеи, как это можно исправить?
Вроде бы так работает правильно:
<?php
/**
* Implements hook_views_pre_render()
*/
function modulename_views_pre_render(&$view) {
if ($view->total_rows && $view->query->offset && $view->query->offset >= $view->total_rows) {
drupal_not_found();
exit;
}
}
?>
Благодарю ваше решение помогло.
А в какой файл вносить этот код?
В template.php конечно же.
Подскажите, пожалуйста, в какой части файла ставить код? Куда попало ставлю, сайт падает![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
modulename следует заменить на свой (название вашей темы/модуля) и тогда все будет работать
Это в template.php? В нем modulename не найду.