web-dev-qa-db-ja.com

/ nodeパスのノード概要ページを無効にする

ノードのリストを表示しているデフォルトのフロントページを無効にしたい。別のフロントページを使用していますが、それでもexample.com/nodeというURLに表示されます。アクセスを制限するか、フロントページにリダイレクトするのが良いでしょう。

私のホームページは現在/homeに設定されています(example.com/にうまく書き換えられます)。今、私はすでにいくつかのことを試しました。

  • /admin/config/search/pathで、エイリアスをnodeからhomeに設定しました。
    残念ながら、これによりexample.comexample.com/nodeの両方がexample.com/homeにリダイレクトされ、ノードリストが表示されます-私のフロントページは表示されません。
  • nodeから<front>までのエイリアスを試してみました(それがそこでも有効かどうかはわかりません)。これはほとんど機能しており、/home/nodeはどちらもexample.comにリダイレクトして正しいページを表示しています。しかし、ノードリストは/<front>で利用できます...
  • また、パネルを使用して、ノードテンプレートのバリアントを作成しました。パスがnodeと等しい場合にステータスコードを返すのは機能しませんでした。ページが/node/でのみスラッシュでトリガーされるためです。もちろんパスは既に使用されているため、ノードパスだけのパネルを作成することはできません。
  • このリストへのアクセスを設定する権限がありません。

では、example.com/nodeのページを無効にするにはどうすればよいですか?
私の問題は、このノードリストがどのような種類のページかわからないことだと思います。私はそれがいくつかのユニークなページタイプであり、コアの奥深くに埋め込まれていて、簡単に無効にできないと感じています。

7
kapex

小さな カスタムモジュール を作成することに問題がなければ、 hook_menu_alter() を使用して簡単に作成できます。

function MYMODULE_menu_alter(&$items) {
  $items['node']['access callback'] = FALSE;
}

上記はページへのアクセスを拒否しますが、完全に削除したい場合は、代わりにこれを使用してください:

function MYMODULE_menu_alter(&$items) {
  unset($items['node']);
}

この件についての議論があります here いくつかの他のアイデアがありますが、これが最も簡単だと思います。

10
Clive

Drupal.orgから Node Page Disable contribモジュールをインストールできます。
次に、「Retain/node as a active url?」ページ構成>システム>サイト情報(/admin/config/system/site-information) Node Page Disable screenshot

2
zniki.ru

エイリアスをhomeシステムパス)からnodealias)に設定するだけで、現在機能しています。これは、私が以前に試したものの逆です。どちらのパスもexample.comと正しい新しいフロントページを表示します。

とにかく、これはおそらくこのURLでシステムノードを単に「非表示にする」だけなので、アクセスを削除/拒否することがこれを処理するためのより良い方法かもしれません。

1
kapex