Template khusus untuk 404 halaman kesalahan


12

Pertanyaan noob cepat di sini! Bagaimana cara mengatur tema untuk menggunakan templat khusus untuk 404 halaman kesalahan daripada menggunakan page.tpl?

Jawaban:


10

Ikuti langkah ini:

  1. Buat halaman baru menggunakan modul Panel (Halaman kosong atau masukkan konten apa pun)

  2. Di admin / config / sistem / informasi-situs, atur halaman Default 404 (tidak ditemukan) ke halaman baru Anda

  3. Ganti file templat untuk halaman itu (halaman - error.tpl.php)

  4. Hapus semua wilayah yang tidak Anda butuhkan dan masukkan kode Anda


5
Dan seseorang bahkan tidak perlu menggunakan panel. Modul yang menangani halaman atau simpul "Halaman dasar" yang paling sederhana juga bisa dilakukan.
Mołot

2
Mengapa Anda memerlukan modul kontribusi untuk membuat 404?
MrUpsidown

1
Masalah dengan menggunakan node, seperti halaman dasar, adalah bahwa ia akan muncul dalam hasil pencarian dan daftar konten terkait lainnya, yang tidak diinginkan.
rooby

27

Namun solusi lain dari diskusi ini yang bekerja tanpa panel atau modul khusus lainnya.

Di folder tema Anda, cari template.phpdan tulis kode ini. Ganti YOURTHEMEdengan nama tema Anda:

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

Setiap kali 404 terjadi, Anda page--404.tpl.phpakan digunakan. Ingatlah untuk memasukkan "-" bukan "__" dalam nama file templat Anda.


Ingatlah untuk menghapus cache Anda jika Anda baru saja membuat page--404.tpl.phpfile.
Blake Erickson

Untuk 403, tajuk $ == '403 Terlarang'.
Henry

ini tampaknya tidak berfungsi dalam modul, templat di folder modul tidak diambil alih. bagaimana melakukan hal yang sama dengan fungsi YOURMODULE_preprocess_page (& $ vars)?
Matoeil

3

Jika Anda ingin memiliki halaman 404 khusus yang tidak melibatkan pembuatan halaman (node), gunakan modul customerror .

Jika Anda memiliki halaman 404 di Drupal, itu akan muncul di hasil pencarian, dan / atau daftar Views Anda.

Saat menggunakan modul customerror, Anda dapat mengganti template dengan membuat halaman - customerror.tpl.php di folder tema Anda. Ingat juga untuk mem-flush cache Anda setelah Anda membuat file template baru.


Itu terlihat bagus, tetapi bagi Anda yang juga menggunakan modul pengalihan tampaknya mereka tidak bermain bersama dengan baik. Saya tidak pernah bisa mendapatkan customerror untuk menunjukkan halamannya atas apa yang ditunjukkan oleh redirect.
evanmcd

1
Kami menggunakan modul Redirect dan Customerror bersamaan tanpa masalah ini. Melihat ke halaman pengaturan dari kedua modul, sepertinya customerror (selain fungsi kesalahan kustomnya) juga memiliki fitur untuk mengelola pengalihan, meskipun dengan antarmuka kasar. Jika Anda menggunakan pengalihan (dan OP tidak), maka cukup hindari menggunakan pengaturan pengalihan customerror, dan Anda seharusnya tidak memiliki masalah.
alexkb

0

Tanpa mengasumsikan konvensi apa pun yang mungkin ada di basis tema Anda, pertanyaannya adalah akhirnya bagaimana saya bisa mengetahui dengan pasti file templat apa yang akan digunakan ...

Berikut langkah-langkahnya:

  1. Buat basis dasar dan menyebutnya sesuai keinginan.
  2. Tetapkan halaman itu ke admin / config / system / site-information response
  3. Aktifkan mode theme_debug.
  4. Ketikkan url bodoh di bilah alamat Anda.
  5. Anda tiba di halaman Anda awalnya dibuat
  6. Lihatlah sumber dan saran templat, Anda akan mendapatkan sesuatu seperti:masukkan deskripsi gambar di sini

  7. Itu lurus ke depan, tidak ada file preprocess atau template.php untuk memodifikasi.

Saya sendiri telah memilih satu yang ditandai oleh kapak, karena saya ingin sesuatu yang telanjang dengan bingkai foto penuh dan hanya link ke belakang.


Perhatikan bahwa halaman dasar yang Anda buat untuk kesalahan 404 juga sekarang akan muncul di hasil pencarian sebagai halaman konten.
rooby
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.