我是Drupal 8的新手。 我正在建立一个简单的网站,不希望允许用户互相联系。但是,我确实想使用诸如Register之类的表格来举办活动。
我已通过添加其他字段(例如姓名,地址,电话等)更新了用户注册表单。
/ user / register显示联系人设置框:
“允许其他用户通过隐藏您的电子邮件地址的个人联系表单与您联系。请注意,即使您选择禁用此功能,某些特权用户(如网站管理员)仍然可以与您联系。”
取消选中个人联系表单复选框。
如何完全隐藏联系人设置框的显示?
答案 0 :(得分:2)
该表格由联系人模块添加。你可以
如果要覆盖 默认行为,您需要创建一个新模块并实现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)
对我来说,禁用个人联系表的最简单方法是:
因此,默认情况下,所有未来用户的个人联系表单都处于关闭状态,并且他们无法将其打开。请注意,这不会改变网站上现有用户的状况。