4

我正在尝试为 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)
4

2 回答 2

4

原来答案在文档中: http: //drupal.org/node/319190

我已经重命名了这个问题,以明确问题出在哪里。这将问题缩小到一个相当具体的用例,但内容分类和层次选择都是处理大型分类的有用和推荐模块。

于 2010-06-01T02:31:30.470 回答
1

(注意:这里假设 Drupal 6)

看一个本地示例,我的内容分类字段没有“tids”属性,但我只使用“optionwidgets_buttons”类型的字段,因此如果您使用其他小部件类型,这可能会有所不同。您能否从您尝试操作的表单中发布内容分类字段结构的转储?

另一方面,内容分类字段具有一些特殊的交互逻辑,涉及稍后在表单/节点处理中将它们“转换”回标准分类数组格式,这可能会影响您。那么您的问题是您对默认值的更改根本没有显示在初始表单显示中,还是它们显示了,但以后没有得到处理?


编辑(问题更新后):抱歉回复晚了。我不确定,但查看您的字段定义,类型显示为hierarchical_select,这将暗示“独立”分层选择小部件。当与内容分类法结合使用时,来自“hs_content_taxonomy”子模块的代码会让我期待一种类型content_taxonomy_hs。这一切都只是猜测,我没有时间自己在本地正确测试,但您可能想检查您是否使用了正确的模块组合/配置。

另一件事是检查与分层选择模块相关的模块权重设置 - 也只是一个疯狂的猜测,但也许您的更改需要在分层选择发挥其魔力之前/之后进行,因此您可能想要测试在您的模块上调整权重。

于 2010-05-12T06:41:39.547 回答