Posted by redboxhosting on August 13, 2014 at 9:45am
こんにちわ。
現在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
こんにちは。
Drupal7で新規登録時のRegisterページやログインするページのTABを削除し、それぞれ別々のページにしたい、とのことですね。
大きな方向性は redboxhosting さんがご認識のとおりでお間違いないかと思います。
redboxhosting さんがどの程度の前提知識をお持ちかわからないのですが、実現方法をざっくりとご紹介してみますね。
大きく次の流れになるかと思います。
hook_menu_alter()を書き、タブを削除する1. カスタムモジュールを作って有効化する
こちらは大丈夫でしょうか? カスタムモジュールの作成 / 有効化の方法がわからない場合は別途検索いただければと思います。
2. カスタムモジュールの中で
hook_menu_alter()を書き、タブを削除するこちらはあげてくださっている PHP コードの次の部分で実現できるかと思います。
<?phpfunction 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 でアクセスできるようになります。
ご参考になるでしょうか。
こちらのページなどもご参考になるかと思います。
https://groups.drupal.org/node/20925
できました
こんにちわ
いつもご丁寧にありがとうございます。
まさにこちらが問題でした・・
色々調べた所、そもそもモジュールとして有効になっていなかったです。初歩的なことで申し訳ありません・・
infoファイルなど正しい値でファイルを作成したところ、管理画面のモジュール上にも作成した名前で表示されたため、有効にしたところ無事アカウント作成画面のタブを削除できました。
教えて頂いたパスを使い、 任意のURLにする事もできました!
他のCMSと異なりDrupalはカスタムモジュールに必要な設定がかなり簡単のように思えます。モジュールといってもPHPですがはやくこのシステムになれたいです。
よかったです
こんにちわ
そうでしたか。結果的に解決されたとのことで何よりです!
私も、フック関数をちゃんと書いているはずなのにどうしてもうまく効かず、、よくよく見てみたら「そもそもモジュールが有効になっていなかった」「フック関数の名前を間違えていた」ということがよくあります。
そうですよね、 .info ファイルと .module ファイルを書いて有効化すればもう動き始めるので便利ですよね。ぜひぜひ楽しんでください。私もがんばります。