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(元のページが見つからないのと非常に似ている)が含まれていることは明らかです。上記の回答で@ Nikhilが言及したモジュールは、「要求されたページが見つかりませんでした」と出力します。エラーの原因となっているページのURLは含まれていません。


ページにナビゲーションリンクが表示されますか?
niksmac

1
@NikhilM私はこれをテストし、スクリーンショットは本物です;-)
AjitS

私は今それをテストしました。ページが見つからないページに表示されるテキストをカスタマイズします。しかし、どうやらそれはどこかからのデフォルトのテキストを示しています!ドルーパルで何が起こっているのですか?
shekoufeh 2015

私は昨日仕事でこれに苦労していました、非常に素晴らしい解決策。
Cyclonecode、2015年

11

これを機能させるモジュールがあります404ナビゲーション

404 Not Foundエラーページでは、パフォーマンス上の理由から、DrupalはWebサイトのすべてのナビゲーションリンクのレンダリングをスキップします*。これらのいくつかは次のとおりです。

「プライマリリンク」ブロックとその他のメニューリンクブロック。テーマのプライマリリンクとセカンダリリンク。* admin / config / system / site-informationで「デフォルト404(見つかりません)」ページを設定していない限り。

また、D7でこれを修正するパッチもあります。

D8参照でTHISまたTHIS


6

良いモジュールの選択肢もあります:

  • 検索404

    標準の「404ページが見つかりません」を表示する代わりに、このモジュールはURLのキーワードで検索を実行します。たとえば、ユーザーがhttp://example.com/does/not/existにアクセスした場合、このモジュールは検索を実行します「存在しない」の場合、404ページの代わりに検索結果が表示されます。これは、他のサイトや検索インデックスからリンクされた古いURLからの訪問者を維持するのに役立ちます。

  • 高速404

    Drupalには高額な404エラーがあります。「平均」モジュール負荷の「平均」サイトでは、サーバーで消費される404〜100MBのメモリを確認できます。不正な.gifリンクと欠落した.cssファイルのあるページを検討してください。そのページは、ページの実際のロードとともに2つの404を生成します。ほとんどの場合、そのページを処理するために必要な60 MBではなく、180 MBのメモリを使用しています。


3

カスタムモジュールでページを定義することでそれを行うことができます。

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

それはほぼ良好です。しかし、このコードは次を返します:

「リクエストされたページpage-not-foundが見つかりませんでした」

current_path()request_uri()に変更する必要があり、次を返します:

「リクエストされたページ/ request_uriが見つかりませんでした」


1
エラーメッセージをに変更しましたt('The requested page "@path" could not be found.', array('@path' => request_uri()));。このように、サイトが多言語の場合、デフォルトのDrupal翻訳が使用されます。
Jeroen

あなたは正しい、それは良い習慣です=)
Andy Mark
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.