404 पृष्ठों पर कोई नेविगेशन लिंक नहीं


11

जब मैं किसी ऐसे पृष्ठ पर जाता हूं जो मौजूद नहीं है, तो मैं अभी भी प्राथमिक और द्वितीयक लिंक को किसी अन्य पृष्ठ पर देखने की अपेक्षा करता हूं, लेकिन मुझे जो मिलता है वह 404 पृष्ठ में कोई नेविगेशन लिंक नहीं है। 404 पृष्ठों पर नो नेविगेशन लिंक भी देखें ।

मुझे एक समाधान मिल गया है, लेकिन मुझे खुशी है अगर कुछ और इसे ठीक कर सकता है (संभवतः अतिरिक्त मॉड्यूल का उपयोग किए बिना)।

जवाबों:


14

आप कस्टम मॉड्यूल में एक पृष्ठ को परिभाषित करके ऐसा कर सकते हैं।

"पेज नहीं मिला" श्रेणी के लिए एक पेज बनाएँ 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;
}

पृष्ठ कॉलबैक current_path()404 त्रुटि के कारण पृष्ठ के पथ को वापस करने के लिए उपयोग करता है।

पर जाएं व्यवस्थापन> कॉन्फिग> सिस्टम> साइट-जानकारी , और प्रवेश पेज-नहीं-पाया (एक ही नाम के रूप में के रूप में परिभाषित hook_menu) के तहत डिफ़ॉल्ट 404 (नहीं मिला) पेज

snap1

अब निम्न स्क्रीनशॉट की तरह त्रुटि पेज दिखाई देता है।

snap2

यह स्पष्ट है कि इसमें सभी नेविगेशन लिंक शामिल हैं, और त्रुटि उत्पन्न करने वाले पृष्ठ URL (पाया गया मूल पृष्ठ के समान)। और @ निखिल द्वारा दिए गए उत्तर में वर्णित मॉड्यूल आउटपुट करेगा "अनुरोधित पृष्ठ नहीं मिला।" लेकिन पृष्ठ का URL उस त्रुटि के कारण नहीं है।


क्या आप वाकई पृष्ठ में नेविगेशन लिंक प्राप्त करेंगे?
निकम्माक

1
@ निखिल ने इसका परीक्षण किया है और स्क्रीनशॉट वास्तविक हैं ;-)
अजीत

मैंने अभी इसका परीक्षण किया है। मैं पृष्ठ नहीं मिला पृष्ठ में दिखाए गए पाठ को अनुकूलित करता हूं। लेकिन स्पष्ट रूप से यह कहीं और से डिफ़ॉल्ट पाठ दिखाता है! ड्रुपल में क्या चल रहा है?
shekoufeh

मैं काम पर कल के साथ संघर्ष कर रहा था, बहुत अच्छा समाधान।
साइक्लोनोस्कोप

11

इस काम को 404 नेविगेशन बनाने के लिए एक मॉड्यूल है

404 नहीं मिला त्रुटि पृष्ठों पर, Drupal प्रदर्शन कारणों से आपकी वेबसाइट के सभी नेविगेशन लिंक को प्रस्तुत करना छोड़ देगा। इनमें से कुछ में शामिल हैं:

"प्राथमिक लिंक" ब्लॉक और किसी भी अन्य मेनू लिंक ब्लॉक। आपकी थीम के प्राथमिक लिंक और माध्यमिक लिंक। * जब तक आपने व्यवस्थापक / कॉन्फ़िगरेशन / सिस्टम / साइट-जानकारी पर "डिफ़ॉल्ट 404 (नहीं मिला) पृष्ठ" कॉन्फ़िगर किया हो।

इसके अलावा D7 में इसे ठीक करने के लिए एक पैच है।

D8 देखें में इस इसके अलावा इस


6

अच्छे मॉड्यूल विकल्प भी हैं:

  • 404 खोजें

    मानक "404 पृष्ठ नहीं मिला" दिखाने के बजाय, यह मॉड्यूल URL में कीवर्ड पर एक खोज करता है, उदाहरण के लिए यदि कोई उपयोगकर्ता http://example.com/does/not/exist पर जाता है , तो यह मॉड्यूल एक खोज करेगा "मौजूद नहीं है" के लिए और 404 पृष्ठ के बजाय खोज का परिणाम दिखाता है। यह अन्य साइटों से या पुराने सूचकांकों से जुड़े पुराने URL से आने वाले आगंतुकों को बनाए रखने में मदद करना चाहिए।

  • तेजी से 404

    Drupal में 404 त्रुटियाँ हैं। 'औसत' मॉड्यूल लोड के साथ 'औसत' साइट पर, आप अपने सर्वर पर 404 डिलीवर करने के लिए 60-100MB मेमोरी का उपभोग कर रहे हैं। एक पृष्ठ को एक खराब .gif लिंक और एक .css फ़ाइल के साथ विचार करें। वह पेज पेज के वास्तविक लोड के साथ 2 404 उत्पन्न करेगा। आप सबसे अधिक संभावना है कि 180MB की मेमोरी उस सर्वर पर देखें जो 60MB के बजाय उस पेज को लेना चाहिए।


3

आप कस्टम मॉड्यूल में एक पृष्ठ को परिभाषित करके ऐसा कर सकते हैं।

हुक_मेनू () का उपयोग करके "पृष्ठ नहीं मिला" श्रेणी के लिए एक पृष्ठ बनाएं।

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

यह लगभग अच्छा है। लेकिन यह कोड लौटाता है:

"अनुरोधित पृष्ठ पृष्ठ-नहीं-पाया नहीं जा सका"

बदलने की जरूरत है current_path () से request_uri () और वापस आएगा:

"अनुरोधित पृष्ठ / request_uri नहीं मिल सका"


1
मैंने त्रुटि संदेश को बदल दिया t('The requested page "@path" could not be found.', array('@path' => request_uri()));। इस तरह से डिफ़ॉल्ट Drupal अनुवाद का उपयोग तब किया जाता है जब आपकी साइट बहुभाषी होती है।
जेरोन

आप सही कह रहे हैं, यह अच्छा अभ्यास है =)
एंडी मार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.