Wenn ich eine Seite besuche, die nicht existiert, erwarte ich weiterhin die primären und sekundären Links wie auf jeder anderen Seite, aber ich erhalte keine Navigationslinks auf der 404-Seite. Siehe auch Keine Navigationslinks auf 404 Seiten .
Ich habe eine Lösung gefunden, bin aber froh, wenn etwas anderes dies beheben kann (möglicherweise ohne zusätzliche Module).
Sie können dies tun, indem Sie eine Seite in einem benutzerdefinierten Modul definieren.
Erstellen Sie eine Seite für die Kategorie "Seite nicht gefunden" mit 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;}
Der Seitenrückruf wird verwendet current_path(), um den Pfad der Seite zurückzugeben, der den 404-Fehler verursacht.
Gehen Sie zu Admin> Config> System> Site-Informationen und geben Sie Seite nicht gefunden (gleicher Name wie in definiert hook_menu) auf der Seite Standard 404 (nicht gefunden) ein .
Jetzt erscheint die Fehlerseite wie im folgenden Screenshot.
Es ist klar, dass es alle Navigationslinks und auch die Seiten-URL enthält, die den Fehler verursacht (sehr ähnlich der ursprünglichen Seite, die nicht gefunden wurde). Und das in der obigen Antwort von @ Nikhil erwähnte Modul gibt "Die angeforderte Seite wurde nicht gefunden" aus. Enthält jedoch nicht die URL der Seite, die den Fehler verursacht.
Sind Sie sicher, dass ich die Navigationslinks auf der Seite erhalten werde?
Niksmac
1
@NikhilM Ich habe dies getestet und die Screenshots sind echt ;-)
AjitS
Ich habe es gerade getestet. Ich passe den auf Seite nicht gefundener Text angezeigten Text an. aber anscheinend zeigt es den Standardtext von woanders! Was ist los in Drupal?
Shekoufeh
Ich hatte gestern bei der Arbeit damit zu kämpfen, sehr schöne Lösung.
Cyclonecode
11
Es gibt ein Modul, mit dem dies funktioniert. 404 Navigation
Auf 404 Not Found-Fehlerseiten überspringt Drupal aus Leistungsgründen * das Rendern aller Navigationslinks Ihrer Website. Einige davon sind:
Der Block "Primäre Links" und alle anderen Menü-Links blockieren. Die primären und sekundären Links Ihres Themas. * Es sei denn, Sie haben eine "Standard 404 (nicht gefunden) Seite" unter admin / config / system / site-information konfiguriert.
Es gibt auch einen Patch , um dies in D7 zu beheben.
Anstatt eine Standard-Seite "404 Seite nicht gefunden" anzuzeigen, führt dieses Modul eine Suche nach den Schlüsselwörtern in der URL durch. Wenn ein Benutzer beispielsweise zu http://example.com/does/not/exist wechselt , führt dieses Modul eine Suche durch für "existiert nicht" und zeigt das Ergebnis der Suche anstelle der 404-Seite. Dies soll dazu beitragen, dass Besucher von alten URLs, die von anderen Websites oder von Suchindizes verlinkt wurden, nicht mehr kommen.
Drupal hat teure 404 Fehler. Auf einer "durchschnittlichen" Site mit einer "durchschnittlichen" Modullast können Sie 60-100 MB Speicher auf Ihrem Server belegen, um eine 404 zu liefern. Betrachten Sie eine Seite mit einem fehlerhaften GIF-Link und einer fehlenden CSS-Datei. Diese Seite generiert 2 404s zusammen mit der tatsächlichen Auslastung der Seite. Sie sehen höchstwahrscheinlich 180 MB Arbeitsspeicher für den Server dieser Seite und nicht die 60 MB, die dafür benötigt werden.
Ich habe die Fehlermeldung in geändert t('The requested page "@path" could not be found.', array('@path' => request_uri()));. Auf diese Weise wird die Standard-Drupal-Übersetzung verwendet, wenn Ihre Site mehrsprachig ist.
Es gibt ein Modul, mit dem dies funktioniert. 404 Navigation
Es gibt auch einen Patch , um dies in D7 zu beheben.
In D8 Siehe DIESES auch DIESES
quelle
Es gibt auch gute Modulalternativen:
Schnell 404
quelle
Sie können dies tun, indem Sie eine Seite in einem benutzerdefinierten Modul definieren.
Erstellen Sie mit hook_menu () eine Seite für die Kategorie "Seite nicht gefunden".
Es ist fast gut. Dieser Code gibt jedoch Folgendes zurück:
muss current_path () in request_uri () ändern und wird zurückgeben:
quelle
t('The requested page "@path" could not be found.', array('@path' => request_uri()));
. Auf diese Weise wird die Standard-Drupal-Übersetzung verwendet, wenn Ihre Site mehrsprachig ist.