我正在尝试在hook_form_alter中设置内容分类字段的默认值,但无法确定必要的格式。我试过这个和很多变化:
foreach (element_children($form) as $child) {
// Set $default_value.
if ($form[$child]['tids']) {
// This, for Content Taxonomy fields, isn't working:
$form[$child]['tids']['#default_value'] = array('value' => $default_value);
dsm($form[$child]['tids']['#default_value']);
}
else {
// This, for other fields, is working:
$form[$child][0]['#default_value']['value'] = $default_value;
}
}
谁能告诉我我错过了什么?
修改 为了回应Henrik Opel(感谢您的参与),这里是打印出表格的相关字段,我对默认字段的更改被注释掉了,显示了我试图影响的'#default_value'字段。
它还显示我正在使用的选项小部件是分层选择(这可能是一个因素?)。在上面代码中的dsm()中,可以识别对默认值的更改,但稍后不会对它们进行处理。
field_name_of_content_taxonomy_field (Array, 3 elements)
#tree (Boolean) TRUE
#weight (String, 1 characters ) 5
tids (Array, 7 elements)
#title (String, 10 characters ) Vocabulary_name
#type (String, 19 characters ) hierarchical_select
#weight (String, 1 characters ) 5
#config (Array, 15 elements)
// 15 elements here
#required (String, 1 characters ) 0
#description (String, 0 characters )
#default_value (Array, 0 elements)
答案 0 :(得分:3)
原来答案在文档中: http://drupal.org/node/319190
我已重新命名这个问题,以明确问题所在。这将问题缩小到一个相当具体的用例,但内容分类和分层选择都是有用的,也是推荐用于处理大分类的模块。
答案 1 :(得分:1)
(注意:在这里假设Drupal 6)
查看本地示例,我的内容分类字段没有'tids'属性,但我只使用'optionwidgets_buttons'类型的字段,因此如果您使用其他窗口小部件类型,这可能会有所不同。您可以从您尝试操作的表单发布内容分类法字段结构的转储吗?
另一方面,Content Taxonomy字段在表单/节点处理中有一些特殊的交互逻辑,关于它们“转换”回标准分类数组格式,这可能会影响到你。那么你的问题是你对默认值的更改在初始表单显示时根本没有显示,或者它们是否显示,但是稍后不进行处理?
编辑(问题更新后):很抱歉迟到的回复。我不确定,但是查看您的字段定义,类型显示为hierarchical_select
,这将提示“独立”分层选择窗口小部件。当与内容分类法一起使用时,'hs_content_taxonomy'子模块中的代码会让我期望一种content_taxonomy_hs
。这只是猜测,我没有时间在本地对此进行正确测试,但您可能想检查是否使用了正确的模块组合/配置。
另一件事是检查与分层选择模块相关的模块权重设置 - 也只是一个疯狂的猜测,但也许你需要在分层选择之前/之后进行更改才能实现它的魔力,所以你可能会想要在你的模块上测试调整后的重量。