如何禁用用户注册中的个人联系表单显示

时间:2017-06-04 21:08:03

标签: drupal-8

我是Drupal 8的新手。 我正在建立一个简单的网站,不希望允许用户互相联系。但是,我确实想使用诸如Register之类的表格来举办活动。

我已通过添加其他字段(例如姓名,地址,电话等)更新了用户注册表单。

/ user / register显示联系人设置框:

“允许其他用户通过隐藏您的电子邮件地址的个人联系表单与您联系。请注意,即使您选择禁用此功能,某些特权用户(如网站管理员)仍然可以与您联系。”

取消选中个人联系表单复选框。

如何完全隐藏联系人设置框的显示?

2 个答案:

答案 0 :(得分:2)

该表格由联系人模块添加。你可以

  1. 在/ admin / modules
  2. 上禁用该模块
  3. 禁用/ admin / config / people / accounts / form-display
  4. 上的联系人输出
  5. 创建一些覆盖(因此您可以针对特定角色或其他逻辑禁用它)
  6. 覆盖

    如果要覆盖 默认行为,您需要创建一个新模块并实现hook_form_alter(),如下所示:

    /**
     * Implements hook_form_alter().
     */
    function yourmodulename_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id)
    {
      if($form_id == 'user_form' || $form_id == 'user_register_form') {
        // Do some checks (e.g. role, permission), and then:
        unset($form['contact']);
      }
    }
    

    联系人模块也通过form_alter钩子添加表单,所以很可能钩子执行的顺序搞砸了(这就是我的情况)。您可能还需要实现hook_module_implements_alter(),如下所示:

    /**
     * Implements hook_module_implements_alter().
     */
    function yourmodulename_module_implements_alter(&$implementations, $hook)
    {
      if($hook == 'form_alter') {
        $group = $implementations['yourmodulename'];
        unset($implementations['yourmodulename']);
        $implementations['yourmodulename'] = $group;
      }
    }
    

答案 1 :(得分:0)

对我来说,禁用个人联系表的最简单方法是:

  1. 按照说明将个人联系方式设置为默认(从Drupal contact module documentation起)
    • 导航到“帐户设置”页面(管理>配置>人员>帐户或http://example.com/admin/config/people/accounts
    • 在“联系人设置”部分中,指定默认情况下是否为用户启用了联系表单。
    • 点击“保存配置”。
  2. 转到/ admin / config / people / accounts / form-display(如上述Marcus所述)
  3. 将“联系人设置”移至禁用状态。
  4. 点击保存

因此,默认情况下,所有未来用户的个人联系表单都处于关闭状态,并且他们无法将其打开。请注意,这不会改变网站上现有用户的状况。