gpt4 book ai didi

drupal-8 - 如何在用户注册中禁用个人联系表显示

转载 作者:行者123 更新时间:2023-12-04 02:04:47 29 4
gpt4 key购买 nike

我是 Drupal 8 的新手。我正在建立一个简单的网站,不想让用户相互联系。但是,我确实想使用诸如 Register for an event 之类的表单。

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

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

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

未选中个人联系表复选框。

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

最佳答案

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

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

覆盖

如果你想覆盖默认行为,您需要创建一个新模块并实现 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)添加表单,所以很可能是钩子(Hook)执行的顺序搞砸了(我就是这种情况)。您可能必须实现 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;
}
}

关于drupal-8 - 如何在用户注册中禁用个人联系表显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44358790/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com