Szablon niestandardowy dla stron błędów 404

12

Szybkie pytanie noob tutaj! Jak ustawić motyw, aby używać niestandardowego szablonu dla stron błędów 404 zamiast korzystania z page.tpl?

Walid Baccari
źródło

Odpowiedzi:

10

Wykonaj następujące kroki:

  1. Utwórz nową stronę za pomocą modułu Panele (Opróżnij stronę lub umieść w niej dowolną treść)

  2. W admin / config / system / site-information ustaw domyślną stronę 404 (nie znaleziono) na nową stronę

  3. Zastąp plik szablonu dla tej strony (strona - error.tpl.php)

  4. Usuń wszystkie regiony, których nie potrzebujesz i umieść kod

Ahmed
źródło
5
I nie trzeba nawet używać paneli. Zrobiłby to również moduł obsługujący stronę lub najprostszy węzeł „Strona podstawowa”.
Mołot
2
Dlaczego potrzebujesz modułu współtworzonego do stworzenia 404?
MrUpsidown,
1
Problem z użyciem węzła, takiego jak strona podstawowa, polega na tym, że pojawi się on w wynikach wyszukiwania i innych listach związanych z treścią, co jest niepożądane.
rooby
27

Kolejne rozwiązanie z tej dyskusji, które działa bez paneli lub innych niestandardowych modułów.

W folderze motywu zlokalizuj template.phpi napisz ten kod. Zamień YOURTHEMEna nazwę swojego motywu:

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

Ilekroć wystąpi 404, page--404.tpl.phpzostaniesz wykorzystany. Pamiętaj, aby wpisać „-” nie „__” w nazwie pliku szablonu.

Daniels
źródło
Pamiętaj, aby wyczyścić pamięć podręczną, jeśli właśnie utworzyłeś page--404.tpl.phpplik.
Blake Erickson,
W przypadku 403 nagłówek $ == '403 Forbidden'.
Henry
wydaje się, że to nie działa w module, szablon w folderze modułu nie jest wyprzedzany. jak zrobić to samo z funkcją YOURMODULE_preprocess_page (& $ vars)?
Matoeil
3

Jeśli chcesz mieć niestandardową stronę 404, która nie wymaga tworzenia strony (węzeł), użyj CustomErrors moduł.

Jeśli masz stronę 404 w Drupal, pojawi się ona w wynikach wyszukiwania i / lub twoich listach wyświetleń.

Korzystając z modułu customerror, możesz zastąpić szablon, tworząc stronę - customerror.tpl.php w folderze motywów. Pamiętaj również, aby opróżnić pamięć podręczną po utworzeniu nowego pliku szablonu.

alexkb
źródło
Wyglądało to dobrze, ale dla tych z was, którzy również korzystają z modułu przekierowań, wydaje się, że nie grają razem dobrze. Nigdy nie mogłem uzyskać błędu niestandardowego, który pokazywałby, że jest to strona ponad tym, co pokazało przekierowanie.
evanmcd
1
Korzystamy z modułów przekierowań i niestandardowych błędów zgodnie bez tych problemów. Przeglądając strony ustawień obu modułów, wygląda na to, że customerror (oprócz funkcji niestandardowych błędów) ma również funkcję zarządzania przekierowaniami, choć z prostym interfejsem. Jeśli używasz przekierowania (a OP nie jest), po prostu unikaj używania ustawień przekierowania customerror i nie powinieneś mieć żadnych problemów.
alexkb
0

Bez zakładania jakiejkolwiek konwencji, która mogłaby istnieć w twojej bazie motywów, pytanie jest w końcu, w jaki sposób mogę się dowiedzieć, jakiego pliku szablonu użyć ...

Oto kroki:

  1. Utwórz podstawową bazę i nazwij ją tak, jak chcesz.
  2. Przypisz tę stronę do odpowiedzi 404 admin / config / system / site-information
  3. Włącz tryb theme_debug.
  4. Wpisz głupi adres URL w pasku adresu.
  5. Pojawia się strona początkowo utworzona
  6. Spójrz na źródło i sugestię szablonów, otrzymasz coś takiego:wprowadź opis zdjęcia tutaj

  7. To proste, nie trzeba modyfikować pliku wstępnego przetwarzania ani template.php.

Sam wybrałem ten oznaczony toporem, ponieważ chciałem czegoś nagiego z pełnym zdjęciem w ramce i tylko linkiem do tyłu.

jmary
źródło
Pamiętaj, że podstawowa strona utworzona dla błędu 404 będzie teraz pojawiać się w wynikach wyszukiwania jako strona z treścią.
rooby