Drupal with Hierarchical Select小部件中Content Classificationonomy字段的默认值

时间:2010-05-11 18:10:12

标签: php drupal drupal-fapi drupal-alter

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

(注意:在这里假设Drupal 6)

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

另一方面,Content Taxonomy字段在表单/节点处理中有一些特殊的交互逻辑,关于它们“转换”回标准分类数组格式,这可能会影响到你。那么你的问题是你对默认值的更改在初始表单显示时根本没有显示,或者它们是否显示,但是稍后不进行处理?


编辑(问题更新后):很抱歉迟到的回复。我不确定,但是查看您的字段定义,类型显示为hierarchical_select,这将提示“独立”分层选择窗口小部件。当与内容分类法一起使用时,'hs_content_taxonomy'子模块中的代码会让我期望一种content_taxonomy_hs。这只是猜测,我没有时间在本地对此进行正确测试,但您可能想检查是否使用了正确的模块组合/配置。

另一件事是检查与分层选择模块相关的模块权重设置 - 也只是一个疯狂的猜测,但也许你需要在分层选择之前/之后进行更改才能实现它的魔力,所以你可能会想要在你的模块上测试调整后的重量。