Drupal初心者です。ユーザーが自分のアカウントを作成するとき、個人用の連絡先フォームを持つオプションがあります。それを無効にするにはどこに行けばよいですか?権限にはありません。これは悪いオプションではありませんが、私のサイトのユーザーが混乱することはわかっています。それはいくつかを怖がらせるかもしれません!
8 に答える
Drupal 7 でテスト済み。
テーマの template.php に以下を配置します。MYTHEME をテーマ名に変更します。
function MYTHEME_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'user_profile_form') {
$form['contact']['#access'] = FALSE;
}
}
access が unset() ではなく、false に設定されていることに注意してください。つまり、削除されます。そうすれば、データの流れを妨げません。
Drupal 6 または 5 で admin/build/contact/settings にアクセスすると、「デフォルトで個人連絡先フォームを有効にする」のチェックを外すことができます。
個人用連絡先フォームは、Drupal でデフォルトで取得されるものではありません。これを行うことができるモジュールがあります。おそらくそのようなモジュールをアクティブにしています。admin/build/settings でアクティブ化したモジュールを確認します。
通常のユーザーに対してのみこれを無効にする場合は、代わりに権限設定を確認する必要があります。
「Core - Optional」の下の連絡先モジュールを無効にします。「連絡先」に関連するユーザー権限を調べて、チェックを外します。
個人的には、サイト全体の連絡フォームを処理する Webform をお勧めします。UI を使用してフォームを作成できます。お問い合わせページを取得する最も簡単な方法。
Drupal 7
All answers NOT remove the section for personal contact option displayed (D7) at "user/%/edit"
For remove tab AND settings for Drupal 7:
/**
* Implements hook_form_alter().
*/
function MY_MODULE_form_alter(&$form, &$form_state, $form_id) {
if ('user_profile_form' === $form_id) {
$form['contact']['#access'] = FALSE;
}
}
/**
* Implements hook_preprocess_page().
*/
function MY_MODULE_preprocess_page(&$variables) {
$menu_items = menu_get_item();
if('user/%/edit' === $menu_items['path']){
$variables['page']['content']['content']['content']['system_main']['contact']['#access'] = FALSE;
}
}
After:
Drupal6:
サイト全体の連絡先フォームを有効にしたいが、個人の連絡先フォームのオプションをユーザーに表示したくない場合は、次の手順に従う必要があります。
カスタム モジュールを作成する
http://www.hankpalan.com/blog/drupal/make-custom-drupal-module
次のコードを .module ファイルに追加します。
function your_module_name_form_user_profile_form_alter(&$form, &$form_state) {
unset ($form['contact']);
}
drupal で設定したモジュールを確認するか、連絡先フォームの設定を確認してください。サイト全体の連絡フォームとユーザーの連絡フォームのオプションがあると思います。
連絡先のアクセス許可を使用します。それは許可を提供します:
管理者が「個人連絡先フォーム」を使用できるロールを構成できるようにする「個人連絡先フォームを使用する」。
また、単純化モジュールには、そのための別のオプションがあります。