我在drupal6中有一个特定的内容类型。我想实现一个钩子,它从添加表单中隐藏该内容类型的主体字段,但不是从编辑表单中隐藏。我怎么能这样做?
答案 0 :(得分:9)
您可以使用hook_form_alter。您可以通过编程方式更改表单api构建的内容。这将为您提供完整的$ form数组,您只需unset($form['the_field_you_dont_want']);
即可。
但摆脱身体字段的更简单方法是在编辑内容类型中有一个标记为'身体字段标签的字段:'只需将其留空即可省略正文字段。
答案 1 :(得分:9)
unset似乎也会破坏该值,#access
属性也是如此。
我只是用它来隐藏一个字段(在这种情况下是一个引用,如果它是使用URL预设的:
$form['field_reference']['#prefix'] = "<div class='hide'>";
$form['field_reference']['#suffix'] = "</div>";
答案 2 :(得分:6)
此处找到的解决方案https://drupal.stackexchange.com/questions/11237/hide-field-in-node-add-page对我很有用。在这里,我重复moon.watcher的解决方案:
function test_remove_filed_form_alter(&$form, &$form_state) {
if (arg(0) == 'node' && arg(1) == 'add') {
$form['field_test']['#access'] = 0;
}
}
使用unset()的缺点是它将完全删除该字段,并且您无法继续使用,例如,在节点预设上。在我的情况下,我只想在第一时间从表单中删除该字段,但我想在以后保存节点之前填充它。由于这个原因,上面链接上的解决方案对我来说非常合适。
答案 3 :(得分:1)
您是否在模块中实现了内容类型(使用hook_node_info)?如果是这样,请将has_body属性设置为false。