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

时间:2010-10-17 23:40:25

标签: drupal

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

2 个答案:

答案 0 :(得分:5)

将“#access”字段设置为“0”或“FALSE”。

例如,这会从站点信息页面中删除“站点任务”字段:

function example_form_system_site_information_settings_alter(&$form, &$form_state){
 $form['site_mission']['#access'] = 0;
}

(其中“example”是自定义模块的名称)


另一个例子,这次它从添加/编辑页面形式中删除了Sticky选项:

function example_form_page_node_form_alter(&$form, &$form_state){
 $form['options']['sticky']['#access'] = 0;
}

您可能已经知道,但您需要知道要更改的表单的ID(和结构)。

大多数情况下,hook_form_THEID_alter(&$form, &$form_state)是修改特定表单的好地方,但是在调用此挂钩后会创建一些字段,因此在这种情况下,您需要使用泛型hook_form_alter(&$form, $form_state, $form_id)代替。


如果你不知道结构甚至表单id(并且不想安装Devel module),你可以使用这个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>";
}

(其中“example”是自定义模块的名称)。


顺便说一句,如果您只是想阻止普通用户修改仅限管理员字段,则只需使用Field Permissions module即可。

答案 1 :(得分:0)

选中此代码段http://drupal.org/node/336355#comment-1192845并使用之前评论['#access'] = FALSE

中所述的内容