Benutzerdefinierte Vorlage für 404-Fehlerseiten

12

Eine kurze Frage hier! Wie man ein Thema einstellt, um eine benutzerdefinierte Vorlage für 404-Fehlerseiten zu verwenden, anstatt page.tpl zu verwenden?

Walid Baccari
quelle

Antworten:

10

Folge diesen Schritten:

  1. Erstellen Sie eine neue Seite mit dem Modul Panels (Leere Seite oder fügen Sie einen beliebigen Inhalt ein).

  2. Setzen Sie in admin / config / system / site-information die Standardseite 404 (nicht gefunden) auf Ihre neue Seite

  3. Überschreibe die Vorlagendatei für diese Seite (page - error.tpl.php)

  4. Entfernen Sie alle Regionen, die Sie nicht benötigen, und geben Sie Ihren Code ein

Ahmed
quelle
5
Und man muss nicht einmal Panels verwenden. Das Modul, das eine Seite oder den einfachsten "Basisseiten" -Knoten behandelt, würde auch reichen.
Mołot
2
Warum benötigen Sie ein beigesteuertes Modul, um einen 404 zu erstellen?
MrUpsidown
1
Das Problem bei der Verwendung eines Knotens, z. B. einer Basisseite, besteht darin, dass er dann in Suchergebnissen und anderen inhaltsbezogenen Auflistungen angezeigt wird, was unerwünscht ist.
Rooby
27

Eine weitere Lösung aus dieser Diskussion , die ohne Panels oder andere benutzerdefinierte Module auskommt.

Suchen Sie in Ihrem Themenordner template.phpdiesen Code und schreiben Sie ihn. Ersetzen Sie YOURTHEMEdurch den Namen Ihres Themas:

function YOURTHEME_preprocess_page(&$vars) {
  $header = drupal_get_http_header('status'); 
  if ($header == '404 Not Found') {     
    $vars['theme_hook_suggestions'][] = 'page__404';
  }
}

Wann immer 404 auftritt, wird Ihr page--404.tpl.phpverwendet. Denken Sie daran, "-" und nicht "__" in den Namen Ihrer Vorlagendatei einzufügen.

Daniels
quelle
Denken Sie daran, den Cache zu leeren, wenn Sie die page--404.tpl.phpDatei gerade erstellt haben .
Blake Erickson
Für 403 ist der $ header == '403 Forbidden'.
Henry
Dies scheint in einem Modul nicht zu funktionieren, die Vorlage im Modulordner wird nicht übernommen. Wie mache ich dasselbe mit der Funktion YOURMODULE_preprocess_page (& $ vars)?
Matoeil
3

Wenn Sie eine angepasste 404-Seite haben möchten, für die keine Seite (Knoten) erstellt werden muss, verwenden Sie das Modul customerror .

Wenn Sie eine 404-Seite in Drupal haben, wird diese in den Suchergebnissen und / oder in Ihren Views-Einträgen angezeigt.

Wenn Sie das Modul "customerror" verwenden, können Sie die Vorlage überschreiben, indem Sie eine Seite "customerror.tpl.php" in Ihrem Designordner erstellen. Denken Sie auch daran, den Cache zu leeren, nachdem Sie eine neue Vorlagendatei erstellt haben.

alexkb
quelle
Das sah gut aus, aber für diejenigen unter Ihnen, die auch das Redirect-Modul verwenden, scheint es, dass sie nicht gut zusammenspielen. Ich könnte nie Kundenfehler bekommen, um seine Seite über dem zu zeigen, was Weiterleitung zeigte.
evanmcd
1
Wir verwenden Redirect- und Customerror-Module ohne diese Probleme. Wenn Sie sich die Einstellungsseiten beider Module ansehen, sieht es so aus, als ob Customerror (zusätzlich zu seiner benutzerdefinierten Fehlerfunktionalität) auch eine Funktion zum Verwalten von Weiterleitungen enthält, wenn auch mit einer groben Oberfläche. Wenn Sie die Umleitung verwenden (und das OP nicht), vermeiden Sie einfach die Verwendung der benutzerdefinierten Umleitungseinstellungen, und Sie sollten keine Probleme haben.
Alexkb
0

Ohne Konventionen vorauszusetzen, die in Ihrer Themenbasis existieren könnten, ist die Frage, wie ich sicher wissen kann, welche Vorlagendatei zu verwenden ist ...

Hier sind die Schritte:

  1. Erstellen Sie eine Basis und nennen Sie sie wie Sie möchten.
  2. Weisen Sie diese Seite den 404-Antwortinformationen admin / config / system / site zu
  3. Aktivieren Sie den theme_debug-Modus.
  4. Geben Sie eine blöde URL in Ihre Adressleiste ein.
  5. Sie gelangen auf Ihre ursprünglich erstellte Seite
  6. Wenn Sie sich die Quelle und den Vorlagenvorschlag ansehen, erhalten Sie etwa Folgendes:Bildbeschreibung hier eingeben

  7. Das ist ganz einfach, es muss keine Vorverarbeitungsdatei oder template.php geändert werden.

Ich habe mich für die mit Axt markierte entschieden, da ich etwas Nacktes mit einem vollen Rahmenbild und nur einem Link zum Rücken haben wollte.

jmary
quelle
Beachten Sie, dass die Basisseite, die Sie für den 404-Fehler erstellt haben, jetzt auch in den Suchergebnissen als Inhaltsseite angezeigt wird.
Rooby