Kiedy odwiedzam stronę, która nie istnieje, spodziewam się, że nadal będę widzieć podstawowe i dodatkowe linki, jak na każdej innej stronie, ale otrzymuję brak linków nawigacyjnych na stronie 404. Zobacz także Brak linków nawigacyjnych na stronach 404 .
Znalazłem rozwiązanie, ale cieszę się, że coś innego może to naprawić (być może bez użycia dodatkowych modułów).
Możesz to zrobić, definiując stronę w niestandardowym module.
Utwórz stronę dla kategorii „Nie znaleziono strony” za pomocą 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;}
Funkcja zwrotna strony używa current_path()do zwrócenia ścieżki strony powodującej błąd 404.
Idź do Admin> Config> System> Site-informacji , a następnie wprowadź stronę-not-found (ta sama nazwa, jak określono w hook_menu) pod Domyślne 404 (nie znaleziono) strona .
Teraz strona błędu pojawia się jak na poniższym zrzucie ekranu.
Oczywiste jest, że zawiera wszystkie łącza nawigacyjne, a także adres URL strony powodujący błąd (bardzo podobny do oryginalnej strony nie znaleziono). Moduł wymieniony w powyższej odpowiedzi przez @ Nikhil wyświetli komunikat „Nie można znaleźć żądanej strony”. ale nie zawiera adresu URL strony powodującej błąd.
Czy na pewno otrzymam linki nawigacyjne na stronie?
niksmac,
1
@NikhilM Przetestowałem to, a zrzuty ekranu są prawdziwe ;-)
AjitS,
Właśnie to przetestowałem. Dostosowuję tekst wyświetlany na stronie nie znaleziono strony. ale najwyraźniej pokazuje domyślny tekst z innego miejsca! co się dzieje w Drupal?
shekoufeh
Walczyłem z tym wczoraj w pracy, bardzo fajne rozwiązanie.
Na stronach błędów 404 Nie znaleziono Drupal pominie renderowanie wszystkich linków nawigacyjnych Twojej witryny ze względu na wydajność *. Niektóre z nich obejmują:
Blok „Główne łącza” i każdy inny blok łączy menu. Główne linki i drugorzędne linki twojego motywu. * Chyba że skonfigurowałeś „Domyślną stronę 404 (nie znaleziono)” w admin / config / system / site-information.
Zamiast wyświetlać standardowe „Nie znaleziono strony 404”, moduł ten wyszukuje słowa kluczowe w adresie URL, np. Jeśli użytkownik wejdzie na http://example.com/does/not/exist , ten moduł przeprowadzi wyszukiwanie dla „nie istnieje” i pokazuje wynik wyszukiwania zamiast strony 404. Powinno to pomóc zatrzymać odwiedzających przychodzących ze starych adresów URL połączonych z innymi witrynami lub z indeksów wyszukiwania.
Drupal ma kosztowne błędy 404. W „przeciętnej” witrynie z „przeciętnym” obciążeniem modułu możesz patrzeć na 60-100 MB pamięci zużywanej na serwerze w celu dostarczenia 404. Rozważ stronę ze złym linkiem .gif i brakującym plikiem .css. Ta strona wygeneruje 2 404 wraz z rzeczywistym ładowaniem strony. Najprawdopodobniej patrzysz na 180 MB pamięci na serwer tej strony, a nie na 60 MB, które powinna ona zająć.
Zmieniłem komunikat błędu na t('The requested page "@path" could not be found.', array('@path' => request_uri()));. W ten sposób używane jest domyślne tłumaczenie Drupal, gdy witryna jest wielojęzyczna.
Jest moduł, aby to działało 404 Nawigacja
Jest także łatka do naprawy tego w D7.
W D8 Zobacz TO TEŻ TE
źródło
Istnieją również dobre alternatywne moduły:
Szybko 404
źródło
Możesz to zrobić, definiując stronę w niestandardowym module.
Utwórz stronę dla kategorii „Nie znaleziono strony” za pomocą hook_menu ().
Jest prawie dobrze. Ale ten kod zwraca:
potrzebuję zmienić current_path () na request_uri () i zwróci:
źródło
t('The requested page "@path" could not be found.', array('@path' => request_uri()));
. W ten sposób używane jest domyślne tłumaczenie Drupal, gdy witryna jest wielojęzyczna.