将" #access"字段设置为" 0"或" FALSE".
例如,这将从站点信息页面中删除"站点任务"字段:
function example_form_system_site_information_settings_alter(&$form, &$form_state){
$form['site_mission']['#access'] = 0;
}
Run Code Online (Sandbox Code Playgroud)
(其中"example"是自定义模块的名称)
另一个例子,这次它从添加/编辑页面表单中删除Sticky选项:
function example_form_page_node_form_alter(&$form, &$form_state){
$form['options']['sticky']['#access'] = 0;
}
Run Code Online (Sandbox Code Playgroud)
您可能已经知道了,但是您需要知道要更改的表单的ID(和结构).
大多数情况下,hook_form_THEID_alter(&$form, &$form_state)是修改特定表单的好地方,但是在调用此挂钩之后会创建一些字段,因此在这种情况下,您需要使用泛型hook_form_alter(&$form, $form_state, $form_id).
如果您不知道结构甚至表单ID(并且不想安装Devel模块),您可以使用此snipplet,这样当您查看要修改的页面时,它将显示表单ID及其在页面顶部的结构.
function example_form_alter(&$form, $form_state, $form_id){
echo "<h1>Form ID: $form_id</h1>";
echo "Form Structure: <pre>".print_r($form, true)."</pre>";
}
Run Code Online (Sandbox Code Playgroud)
(其中"example"是自定义模块的名称).
顺便说一句,如果您只是试图阻止普通用户编辑仅管理员字段,您可以简单地使用字段权限模块.