404 sayfada gezinme bağlantısı yok


11

Var olmayan bir sayfayı ziyaret ettiğimde, birincil ve ikincil bağlantıları başka herhangi bir sayfada olduğu gibi görmeyi bekliyorum, ancak aldığım şey 404 sayfasında gezinme bağlantısı yok. Ayrıca bkz . 404 sayfada gezinme bağlantısı yok .

Bir çözüm buldum, ancak başka bir şey bunu düzeltebilirse mutluyum (muhtemelen ekstra modüller kullanmadan).

Yanıtlar:


14

Özel bir modülde bir sayfa tanımlayarak bunu yapabilirsiniz.

Kullanarak "Sayfa bulunamadı" kategorisi için bir sayfa oluşturun 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;
}

Sayfa geri current_path()araması, 404 hatasına neden olan sayfanın yolunu döndürmek için kullanılır.

Git Yönetici> Config'de> Sistem> Siteyle bilgi ve gir sayfasını-bulunamadı (tanımlanan aynı ad hook_menualtında) Varsayılan 404 (bulunamadı) sayfası .

snap1

Şimdi hata sayfası aşağıdaki ekran görüntüsünde olduğu gibi görünür.

snap2

Tüm gezinme bağlantılarını ve ayrıca hatayı üreten sayfa URL'sini içerdiği açıktır (bulunamadı orijinal sayfaya çok benzer). Ve @ Nikhil tarafından yukarıdaki cevapta bahsedilen modül "İstenen sayfa bulunamadı." ancak hataya neden olan sayfanın URL'sini içermez.


Sayfadaki gezinme bağlantılarını alacağımdan emin misiniz?
niksmac

1
@NikhilM Bunu test ettim ve ekran görüntüleri gerçek ;-)
AjitS

Şimdi test ediyorum. Sayfa bulunamadı sayfasında gösterilen metni özelleştiriyorum. ama görünüşe göre başka bir yerden varsayılan metni gösteriyor! drupal'da neler oluyor?
shekoufeh

Dün işte bununla uğraşıyordum, çok güzel bir çözüm.
Siklon kodu

11

Bu işi yapacak bir modül var 404 Navigasyon

404 Bulunamadı hata sayfalarında, Drupal performans nedenleriyle web sitenizin tüm gezinme bağlantılarının oluşturulmasını atlayacaktır *. Bunlardan bazıları:

"Birincil bağlantılar" bloğu ve diğer menü bağlantıları bloğu. Temanızın Birincil bağlantıları ve İkincil bağlantıları. * Yönetici / config / system / site-information adresinde bir "Varsayılan 404 (bulunamadı) sayfası" yapılandırmadıysanız.

Ayrıca bunu D7'de düzeltmek için bir Yama var .

D8'de BU BUNU da BU


6

İyi modül alternatifleri de vardır:

  • Arama 404

    Standart bir "404 Sayfa bulunamadı" göstermek yerine, bu modül URL'deki anahtar kelimeler üzerinde bir arama yapar, örneğin bir kullanıcı http://example.com/does/not/exist adresine giderse , bu modül bir arama yapar için "mevcut değil" ve 404 sayfası yerine aramanın sonucunu gösterir. Bu, diğer sitelerden veya arama dizinlerinden bağlanan eski URL'lerden gelen ziyaretçilerin tutulmasına yardımcı olmalıdır.

  • Hızlı 404

    Drupal pahalı 404 hataları var. 'Ortalama' modül yükü olan 'ortalama' bir sitede, 404 sunmak için sunucunuzda tüketilen 60-100MB belleğe bakabilirsiniz. Kötü bir .gif bağlantısı ve .css dosyası eksik olan bir sayfayı düşünün. Bu sayfa, sayfanın gerçek yüküyle birlikte 2.404s üretecektir. Muhtemelen 60MB yerine o sayfaya sunucu için 180MB bellek bakıyorsunuz.


3

Özel bir modülde bir sayfa tanımlayarak bunu yapabilirsiniz.

Hook_menu () kullanarak "Sayfa bulunamadı" kategorisi için bir sayfa oluşturun.

 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;
 }

Neredeyse iyi. Ancak bu kod şunu döndürür:

"İstenen sayfa bulunamadı bulunamadı"

Gerek değişim current_path () için (REQUEST_URI) ve döndürür:

"İstenen sayfa / request_uri bulunamadı"


1
Hata mesajını olarak değiştirdim t('The requested page "@path" could not be found.', array('@path' => request_uri()));. Bu şekilde, siteniz çok dilli olduğunda varsayılan Drupal çevirisi kullanılır.
Jeroen

Haklısın, bu iyi bir uygulama =)
Andy Mark
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.