Tidak ada tautan navigasi di 404 halaman

11

Ketika saya mengunjungi halaman yang tidak ada, saya berharap masih melihat tautan primer dan sekunder seperti di halaman lain, tetapi yang saya dapatkan adalah tidak ada tautan navigasi di halaman 404. Lihat juga Tidak ada tautan navigasi di 404 halaman .

Saya telah menemukan solusi, tetapi saya senang jika ada hal lain yang dapat memperbaikinya (mungkin tanpa menggunakan modul tambahan).

niksmac
sumber

Jawaban:

14

Anda dapat melakukannya dengan mendefinisikan halaman dalam modul khusus.

Buat halaman untuk kategori "Halaman tidak ditemukan" menggunakan 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;
}

Panggilan balik halaman digunakan current_path()untuk mengembalikan jalur halaman yang menyebabkan kesalahan 404.

Buka Admin> Config> Sistem> Informasi situs , dan masukkan halaman-tidak-ditemukan (nama yang sama seperti yang didefinisikan dalam hook_menu) di bawah halaman Default 404 (tidak ditemukan) .

snap1

Sekarang halaman kesalahan muncul seperti pada tangkapan layar berikut.

snap2

Jelas bahwa itu berisi semua tautan navigasi, dan juga URL halaman yang menghasilkan kesalahan (sangat mirip dengan halaman asli tidak ditemukan). Dan modul yang disebutkan dalam jawaban di atas oleh @ Nikhil akan menampilkan "Halaman yang diminta tidak dapat ditemukan." tetapi tidak mengandung URL halaman yang menyebabkan kesalahan.

Ajit
sumber
Apakah Anda yakin saya akan mendapatkan tautan navigasi di halaman?
niksmac
1
@ NikhilM Saya sudah menguji ini dan screenshotnya nyata ;-)
AjitS
Saya sudah mengujinya sekarang. Saya menyesuaikan teks yang ditampilkan di halaman yang tidak ditemukan. tetapi ternyata itu menunjukkan teks default dari tempat lain! apa yang terjadi di drupal?
shekoufeh
Saya berjuang dengan ini kemarin di tempat kerja, solusi yang sangat bagus.
Cyclonecode
11

Ada modul untuk membuat ini berfungsi 404 Navigasi

Pada halaman kesalahan 404 Tidak Ditemukan, Drupal akan melewatkan rendering semua tautan navigasi situs web Anda untuk alasan kinerja *. Beberapa di antaranya adalah:

Blok "Tautan primer" dan blok tautan menu lainnya. Tautan Primer dan Tautan Sekunder dari tema Anda. * Kecuali Anda telah mengkonfigurasi halaman "Default 404 (tidak ditemukan)" di admin / config / system / site-information.

Juga ada Patch untuk memperbaikinya di D7.

Dalam D8 Lihat INI Juga INI

niksmac
sumber
6

Ada juga alternatif modul yang baik:

  • Cari 404

    Alih-alih menunjukkan standar "404 Halaman tidak ditemukan", modul ini melakukan pencarian pada kata kunci dalam URL, misalnya jika pengguna pergi ke http://example.com/does/not/exist , modul ini akan melakukan pencarian untuk "tidak ada" dan menunjukkan hasil pencarian alih-alih halaman 404. Ini akan membantu mempertahankan pengunjung yang datang dari URL lama yang ditautkan dari situs lain atau dari indeks pencarian.

  • Cepat 404

    Drupal memiliki kesalahan 404 yang mahal. Di situs 'rata-rata' dengan beban modul 'rata-rata', Anda dapat melihat 60-100MB memori yang digunakan di server Anda untuk menghasilkan 404. Pertimbangkan halaman dengan tautan .gif yang buruk dan file .css yang hilang. Halaman itu akan menghasilkan 2 404s bersama dengan beban halaman yang sebenarnya. Anda kemungkinan besar melihat memori 180MB ke server halaman itu daripada 60MB yang harus diambil.

geekgirlweb
sumber
3

Anda dapat melakukannya dengan mendefinisikan halaman dalam modul khusus.

Buat halaman untuk kategori "Halaman tidak ditemukan" menggunakan 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() . " ould not be found";
   return $cust_err;
 }

Hampir bagus. Tetapi kode ini kembali:

"Halaman yang diminta tidak ditemukan tidak dapat ditemukan"

perlu mengubah current_path () ke request_uri () dan akan kembali:

"Halaman / request_uri yang diminta tidak dapat ditemukan"

Andy Mark
sumber
1
Saya mengubah pesan kesalahan menjadi t('The requested page "@path" could not be found.', array('@path' => request_uri()));. Dengan cara ini terjemahan Drupal default digunakan ketika situs Anda multilangual.
Jeroen
Anda benar, ini latihan yang baik =)
Andy Mark