Спеціальний шаблон для 404 сторінок помилок


12

Швидке запитання Noob тут! Як встановити тему, щоб використовувати спеціальний шаблон для 404 сторінок помилок замість сторінки page.tpl?

Відповіді:


10

Виконайте такі дії:

  1. Створіть нову сторінку за допомогою модуля "Панелі" (Порожня сторінка або вставте в неї будь-який вміст)

  2. На сторінці адміністратора / config / системи / інформації про сайт встановлено за замовчуванням 404 (не знайдено) для вашої нової сторінки

  3. Замініть файл шаблону для цієї сторінки (сторінка - error.tpl.php)

  4. Видаліть усі регіони, які вам не потрібні, і введіть свій код


5
І навіть не потрібно використовувати панелі. Модуль, що обробляє сторінку або найпростіший вузол "Основна сторінка", також буде.
Молот

2
Чому для створення 404 вам потрібен модуль?
MrUpsidown

1
Проблема з використанням вузла, наприклад базової сторінки, полягає в тому, що він з’явиться в результатах пошуку та інших списках, пов’язаних із вмістом, що небажано.
рубін

27

Ще одне рішення цього обговорення, яке працює без панелей чи інших спеціальних модулів.

Знайдіть template.phpі напишіть цей код у папці тем . Замініть YOURTHEMEназвою вашої теми:

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

Кожного разу, коли відбудеться 404, ви page--404.tpl.phpбудете використані. Не забудьте поставити "-" не "__" у своєму файлі шаблону.


Не забудьте очистити кеш, якщо ви тільки що створили page--404.tpl.phpфайл.
Блейк Еріксон

Для 403 $ header == '403 Заборонено'.
Генрі

це, здається, не працює в модулі, шаблон у папці модуля не обганяється. як зробити те ж саме з функцією YOURMODULE_preprocess_page (& $ vars)?
Matoeil

3

Якщо ви хочете мати налаштовану сторінку 404, яка не передбачає створення сторінки (вузла), використовуйте модуль клієнта .

Якщо у вас є сторінка 404 в Drupal, вона відображатиметься в результатах пошуку та / або у списках переглядів.

Використовуючи модуль клієнта, ви можете змінити шаблон, створивши сторінку - customerror.tpl.php у своїй темі. Запам’ятайте також, щоб ви очистіли кеш після створення нового файлу шаблону.


Це виглядало добре, але для тих, хто також використовує модуль переадресації, здається, що вони не грають добре разом. Я ніколи не міг змусити клієнта показати його сторінку над тим, що показало переспрямування.
evanmcd

1
Ми використовуємо модулі Redirect і Customerror в унісон без цих проблем. Переглядаючи сторінки налаштувань обох модулів, схоже, що клієнт (окрім спеціальної функціональної помилки) також має функцію керування переадресаціями, хоча і із сирим інтерфейсом. Якщо ви використовуєте переадресацію (а ОП - ні), просто уникайте використання налаштувань переадресації клієнта, і у вас не повинно виникнути жодних проблем.
alexkb

0

Не припускаючи жодної конвенції, яка може існувати у вашій тематичній базі, нарешті виникає питання, як я можу точно дізнатися, який файл шаблону використовувати ...

Ось такі кроки:

  1. Створіть основну базу і називайте її так, як вам хочеться.
  2. Призначте цю сторінку адміністратору / конфігурації / системі / інформації / сайту 404 відповідей
  3. Увімкніть режим topic_debug.
  4. Введіть тупу URL-адресу у свій адресний рядок.
  5. Ви потрапляєте на свою первинно створену сторінку
  6. Подивіться на джерело та пропозицію шаблонів, ви отримаєте щось на зразок:введіть тут опис зображення

  7. Це прямо вперед, жоден файл попередньої обробки або template.php для зміни.

Сам я вибрав ту, яку позначає сокира, тому що мені хотілося чогось голого з цілком обрамленою рамкою та просто посиланням на спину.


Зауважте, що основна сторінка, яку ви створили для помилки 404, тепер також відображатиметься в результатах пошуку як сторінка вмісту.
рубін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.