ユーザー登録画面やログイン画面のタブを削除したい

Events happening in the community are now at Drupal community events on www.drupal.org.
redboxhosting's picture

こんにちわ。

現在Drupal7で新規登録時のRegisterページやログインするページのTABを削除し、それぞれ別々のページにしたいと考えています。

色々しらべたところ、function hook_menu_alterで上書きすれば消せる?と書いてあるページをみつけました。

https://api.drupal.org/api/drupal/developer!hooks!core.php/function/hook_menu_alter/6

しかし、そもそもの使い方がわかりません。こちらのサイトを見る限りだと、module/モジュール名のフォルダ/モジュール名.moduleというファイルの中に以下のようなPHPコードをかいてキャッシュをクリアすれば消せると書いてあるようですので、そのようにおこなったつもりなのですが、どうもうまくいかずアドバイス頂けると助かります。

PHPコード

<?php
function sepalate_tab_menu_alter(&$items) {
 
// Remove tabs in default registration form
 
$items['user']['type'] = MENU_CALLBACK;
 
$items['user/register']['type'] = MENU_CALLBACK;
 
$items['user/password']['type'] = MENU_CALLBACK;

 
// Remove the tabs in the new Auto Assign Role registration form
 
$items['developer']['type'] = MENU_CALLBACK;
 
$items['developer/register/register']['type'] = MENU_CALLBACK;
 
$items['developer/register/password']['type'] = MENU_CALLBACK;
}
?>

Comments

こんにちは。Drupal7で新規登録時のRegister

hgoto's picture

こんにちは。

Drupal7で新規登録時のRegisterページやログインするページのTABを削除し、それぞれ別々のページにしたい、とのことですね。
大きな方向性は redboxhosting さんがご認識のとおりでお間違いないかと思います。

redboxhosting さんがどの程度の前提知識をお持ちかわからないのですが、実現方法をざっくりとご紹介してみますね。
大きく次の流れになるかと思います。

  1. カスタムモジュールを作って有効化する
  2. カスタムモジュールの中で hook_menu_alter() を書き、タブを削除する
  3. 切り分けたページ( Register ページやログインページ)のパスを別途設定する

1. カスタムモジュールを作って有効化する

こちらは大丈夫でしょうか? カスタムモジュールの作成 / 有効化の方法がわからない場合は別途検索いただければと思います。

2. カスタムモジュールの中で hook_menu_alter() を書き、タブを削除する

こちらはあげてくださっている PHP コードの次の部分で実現できるかと思います。

<?php
function sepalate_tab_menu_alter(&$items) {
 
// Remove tabs in default registration form
 
$items['user']['type'] = MENU_CALLBACK;
 
$items['user/register']['type'] = MENU_CALLBACK;
 
$items['user/password']['type'] = MENU_CALLBACK;
}
?>

カスタムモジュール名が sepalate_tab である必要があるのでご注意ください。
また、お書きいただいているとおり hook_menu_alter() を書き換えた後にはキャッシュクリアが必要ですのでその点もご注意ください。

ここまでできたら、パス /user や /user/register にアクセスしたときのタブが消えているはずです。

3. 切り分けたページ( Register ページやログインページ)のパスを別途設定する

こちらは切り分けたページに個別のパスを設定したい場合の作業です。おそらくこちらも実現されたいのではないでしょうか。

これは Drupal のコアの path モジュールを使う方法が簡単です。

まず、管理者ユーザでログインし、パス /admin/config/search/path にアクセスしていただくとパスエイリアスを設定することができます。
ここでたとえば次のような設定をひとつ加えると、以降、切り分けられた新規登録ページがパス /register でアクセスできるようになります。

  • エイリアスパス register
  • システムパス user/register

ご参考になるでしょうか。

こちらのページなどもご参考になるかと思います。

https://groups.drupal.org/node/20925

できました

redboxhosting's picture

こんにちわ

いつもご丁寧にありがとうございます。

まさにこちらが問題でした・・

  1. カスタムモジュールを作って有効化する

色々調べた所、そもそもモジュールとして有効になっていなかったです。初歩的なことで申し訳ありません・・
infoファイルなど正しい値でファイルを作成したところ、管理画面のモジュール上にも作成した名前で表示されたため、有効にしたところ無事アカウント作成画面のタブを削除できました。

教えて頂いたパスを使い、 任意のURLにする事もできました!

他のCMSと異なりDrupalはカスタムモジュールに必要な設定がかなり簡単のように思えます。モジュールといってもPHPですがはやくこのシステムになれたいです。

よかったです

hgoto's picture

こんにちわ

そうでしたか。結果的に解決されたとのことで何よりです!

私も、フック関数をちゃんと書いているはずなのにどうしてもうまく効かず、、よくよく見てみたら「そもそもモジュールが有効になっていなかった」「フック関数の名前を間違えていた」ということがよくあります。

他のCMSと異なりDrupalは...

そうですよね、 .info ファイルと .module ファイルを書いて有効化すればもう動き始めるので便利ですよね。ぜひぜひ楽しんでください。私もがんばります。

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: