Описание проблемы
На сайте при переходе по URL с номером несуществующей страницы пагинации (например, страница 10 при общем количестве страниц 7) отображается содержимое существующей страницы (страница 1 вместо 404 ошибки). Это связано с некорректной настройкой контекстных фильтров в Drupal 10.
Задача
- Настроить контекстные фильтры для вида (View), отвечающего за пагинацию, так, чтобы при превышении допустимого номера страницы возвращался ответ 404 (NotFound).
- Убедиться, что передача параметров пагинации из URL в контекстные фильтры работает корректно и не приводит к лже-совпадениям (когда смежный материал или страница по умолчанию подменяют неизвестный запрос).
- Протестировать граничные случаи: нулевая страница, отрицательная страница, страница с id, не соответствующим ни одной записи.
Требования к реализации
- Использовать механизм контекстных фильтров Drupal 10 (Views Contextual Filters), можно с заменой обработчика по умолчанию на кастомный или встроенный для возврата 404.
- Код не должен конфликтовать с другими модулями и пагинацией на сайте (Pager, Pathauto, Metatag и т.д.).
- При невалидном параметре (отрицательное число, буквы, слишком большая страница) - показывать стандартную 404 страницу Drupal.
- Реализация должна быть на чистом Drupal API, без дополнительных сторонних модулей, кроме входящих в ядро (проверьте конфигурацию кеширования).
Что должно получиться на выходе
Ссылка вида /some-view?page=99 (или /some-view/99, если используется Path Based пагинация) возвращает 404, а не страницу /some-view с произвольным содержимым.