Когда я посещаю несуществующую страницу, я ожидаю увидеть первичные и вторичные ссылки, как и на любой другой странице, но я получаю только навигационные ссылки на странице 404. Смотрите также Нет навигационных ссылок на 404 страницах .
Я нашел решение, но я рад, если что-то еще может это исправить (возможно, без использования дополнительных модулей).
Вы можете сделать это, определив страницу в пользовательском модуле.
Создайте страницу для категории «Страница не найдена» с помощью hook_menu().
function MODULE_menu(){
$items['page-not-found']= array('title'=>'','page callback'=>'MODULE_page_not_found','access callback'=> TRUE,);return $items;}function MODULE_page_not_found(){
drupal_set_title('Page not found');
$cust_err ="";
$cust_err = $cust_err ."The requested page ". current_path()." could not be found";return $cust_err;}
Обратный вызов страницы используется current_path()для возврата пути страницы, вызывающей ошибку 404.
Перейти к Admin> Config> Система> Site-информация , и введите страницу, не обретенное ( такое же название , как определено в hook_menu) по умолчанию 404 (не найдено) страницы .
Теперь страница ошибки появляется, как на следующем скриншоте.
Понятно, что он содержит все навигационные ссылки, а также URL-адрес страницы, приводящий к ошибке (очень похоже на исходную страницу не найдена). И модуль, упомянутый выше в ответе @ Nikhil, выдаст «Запрошенная страница не найдена». но не содержит URL страницы, вызвавшей ошибку.
Вы уверены, что я получу навигационные ссылки на странице?
Никсмак
1
@NikhilM Я проверял это, и скриншоты реальны ;-)
AjitS 19.12.12
Я проверю это прямо сейчас. Я настраиваю текст показанный на странице не найденная страница. но, видимо, он показывает текст по умолчанию откуда-то еще! что происходит в друпале?
Shekoufeh
Я боролся с этим вчера на работе, очень хорошее решение.
На страницах с ошибками 404 Not Found, Drupal пропустит рендеринг всех навигационных ссылок вашего сайта по соображениям производительности *. Некоторые из них включают в себя:
Блок «Первичные ссылки» и любой другой блок ссылок меню. Первичные ссылки и Вторичные ссылки вашей темы. * Если вы не настроили «Страницу по умолчанию 404 (не найдено)» в admin / config / system / site-information.
Вместо того, чтобы показывать стандартную страницу 404 «Страница не найдена», этот модуль выполняет поиск по ключевым словам в URL-адресе, например, если пользователь переходит на http://example.com/does/not/exist , этот модуль выполняет поиск. для "не существует" и показывает результат поиска вместо страницы 404. Это должно помочь удержать посетителей, пришедших со старых URL-адресов, связанных с другими сайтами, или с поисковых индексов.
У Drupal есть дорогие 404 ошибки. На «среднем» сайте со «средней» загрузкой модуля вы можете посмотреть, как 60-100 МБ памяти используется вашим сервером для доставки 404. Рассмотрим страницу с плохой ссылкой .gif и отсутствующим файлом .css. Эта страница будет генерировать 2 404s вместе с фактической загрузкой страницы. Скорее всего, вы просматриваете эту страницу на 180 МБ памяти, а не на 60 МБ.
Я изменил сообщение об ошибке на t('The requested page "@path" could not be found.', array('@path' => request_uri()));. Таким образом, перевод по умолчанию Drupal используется, когда ваш сайт многоязычный.
Есть модуль для этой работы 404 Навигация
Также есть патч, чтобы исправить это в D7.
В D8 См этот же ЭТО
источник
Есть также хорошие альтернативы модуля:
Фаст 404
источник
Вы можете сделать это, определив страницу в пользовательском модуле.
Создайте страницу для категории «Страница не найдена» с помощью hook_menu ().
Это почти хорошо. Но этот код возвращает:
нужно изменить current_path () на request_uri () и вернет:
источник
t('The requested page "@path" could not be found.', array('@path' => request_uri()));
. Таким образом, перевод по умолчанию Drupal используется, когда ваш сайт многоязычный.