drupal form alter从内容创建/编辑表单中删除cck字段

Mic*_*l D 3 drupal

从内容类型的创建/编辑表单页面中删除cck字段显示的代码是什么?

wil*_*aks 5

将" #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"是自定义模块的名称).


顺便说一句,如果您只是试图阻止普通用户编辑仅管理员字段,您可以简单地使用字段权限模块.