デフォルトページ/ノードを非表示にするにはどうすればよいですか?


22

ボックスのDrupalのうちはに割り当てられている(デフォルトのホームページで)ページに付属しているノードのパス。

ユーザーがアクセスしてサイトの実際のホームページにリダイレクトするのを防ぐにはどうすればよいですか?


@kiamlalunoが提案したソリューションを使用して、ノードを別のパスにリダイレクトしました。

回答:



8

/ nodeからフロントページとして使用するページにリダイレクトするパスエイリアスを作成します。


1
これは、URLエイリアスモジュール、/ nodeを<front>またはindex.phpにエイリアスする場合には機能しません。私はちょうどに転送しようとしています/
ジョン

5
奇妙なことに、<node>に/ nodeを実行したところ、問題なく動作しました。
ショーンバニスター

@johnのように、エイリアシングのUIでは、フロントページに進むことができません。代わりにリダイレクトモジュールを使用する必要がありました。
ポスト

6

エラー404ページが表示されるように、/ nodeのページコールバックを変更することを好みます。
これは、/ nodeにアクセスするときに常にカスタム404ページを表示します。

function yourmodule_menu_alter(&$items) {
    $items['node']['page callback'] = 'drupal_not_found';      
}

4
<?php
function MY_MODULE_menu_alter(&$callbacks) {
unset($callbacks['node']);
}
?>

または、これをsettings.php(URLインバウンドのもの)に追加します

<?php
function custom_url_rewrite_inbound(&$result, $path, $path_language) {
  if ($path == 'node') {
    $result = ''; 
  }
}
?>


1

berdirsの回答と同様に、ビルド元のカスタムディストリビューションの一部であるモジュールに次のコードが含まれています。

function HOOK_menu_alter(&$items) {
  $items['node']['page callback'] = '_HOOK_empty_home';
}

function _HOOK_empty_home() {
  drupal_set_title('');
  return '';
}

そうすれば、「ノード」パスをフロントページとして保持し、コンテキストを使用してブロックを配置して必要なフロントページを作成できます。


1

公開されていない/ nodeにマップされたページを作成できます。したがって、このパスを呼び出すユーザーにはアクセス禁止ページがあります


1

私にとって簡単な解決策は、ホームページにしたいページを作成し、URLを/ nodeに設定することでした。次に、/ admin / config / system / site-informationの下で、デフォルトのフロントページを/ nodeに設定します。誰かが実際に入力しない限り、URLに「/ node」が表示されることはありません。ホームページのURLを/ nodeに設定する場合は、すばやく簡単にクリーンになります。


1

ノードURLを使用して新しいページを作成すると、フロントページにアクセスするか何かのカテゴリを選択するようにリダイレクトするメッセージが表示されます。


1

複数のことを試しました。次に、Drupal 7および8については、コードを記述することなく、これが最も簡単であることがわかりました。

node_page_disable、globalredirect、redirectモジュールをダウンロードして有効にします。

(注:node_page_disableモジュールは、/ nodeを404 not foundエラーページにリダイレクトします。)

次に、/ node->フロントページのリダイレクトを追加します

リダイレクトは、/ nodeと/ node /の両方をフロントページにリダイレクトすることに注意してください。

読むべき役立つ記事:https : //www.drupalaid.com/blog/3-things-you-should-hide


これはD8のビューなので、drush @example.com views-disable frontpageオフにします。ただし、他の処理が完了するまでは404を取得します。
コラン

0

ノードを作成し、サイト構成->サイト情報に移動して、ホームページをノードのパスに設定します。最初のノードの場合、node / 1になります。

編集:デフォルトでは、ノードを作成するだけで、「フロントページにプロモート」をオンにすると、そのページは消えます。サイト情報の手順により、そのノードが実際のフロントページになります。


1
本当ですが、/nodeまだ到達できます。デフォルトでは表示されません
-Laxman13

私は彼が求めていたものを読み違えました。パスリダイレクトhttp://drupal.org/project/path_redirectモジュールはどうですか?
マイクL.

1
残念ながら、パスリダイレクトでは、既存のパスからリダイレクトすることはできません。リダイレクトしようとしているパスが有効なパスであるかどうかを確認し、有効な場合、リダイレクトは作成されず、警告が表示されます。
Laxman13

クール。私はしばらくそれを使用していなかったので、ポジティブではありませんでした。ありがとう!
マイクL.

0

ルールモジュールを使用して、ページを表示する前にURLを確認し、必要に応じてユーザーを別のページにリダイレクトできます。

  • イベントにルールを追加:コンテンツが表示されます
  • 条件の追加:カスタムPHPコード実行し、パスを確認します
  • アクションの追加:ページのリダイレクトおよびリダイレクト先のパスを選択します

これは、深刻なパフォーマンスのペナルティをもたらすだけでなく、非常に安全でないと見なされる必要があります。「カスタムPHPを実行」は、すべての副作用と欠点が非常によく知られている場合を除き、推奨されるべきではありません。-1。
バーク

@berkesは、ルールがすべてのページのロードでチェックを実行し、それによりサイトの速度が低下するためだと思いますか?「カスタムphpを実行」が常に嫌われるのはなぜですか?エンドユーザーの使用には明らかに良くありませんが、開発者の使用にも欠点はありますか?長い間すみませんが、Drupalでできる限りの最高の仕事をし、「内と外」を学んでいます。(必要に応じて2番目の部分を独自の質問として追加できます)
Laxman13

新しい「Q」「カスタム」PHPを使用する場合のマイナス面」を検討してください。これについては、いくつかのサンプル領域(ブロック、ビュー引数、php-filterなど)を使用してください。
バーク

0

かなり数年前の人気の質問で、すでに興味深い回答がいくつかあります。ただし、「最近は、そのためのモジュールがあります。実際には2つもあります!」(以前の回答のいずれにも言及されていません)。

詳細をお読みください...(プロジェクトページからの引用)...

ノードページ管理(D6またはD7):

このモジュールは、/ nodeページアクセスを処理する管理設定パネルを追加します。アクティブ化されると、3つの可能な構成があります。

  • コア-Drupalコアは通常どおりノードページアクセスを処理します:「アクセスコンテンツ」権限を持つすべてのユーザー
  • 無効-誰も/ nodeにアクセスできません。「ページが見つかりません」(404)を返します。
  • アクセス許可-アクセスは新しいアクセス許可「ノードページへのアクセス」によって処理されます

ノードページの無効化(D6またはD7、ただしrc2バージョンのみ):

使用されていない場合、簡単なUIアクセスとパス/ nodeの無効化を許可します。これは、Production Check Moduleのセキュリティに関する考慮事項に触発されました。


-1

最良の方法は、template_preprocess_page関数からノードを非表示にすることです

function template_preprocess_page(&$variables) {
    if ($variables['is_front'] == 1) {
        if (isset($variables['page']['content']['system_main'])) {
            unset($variables['page']['content']['system_main']);
        }
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.