Значения по умолчанию для полей таксономии контента в Drupal с виджетом "Иерархический выбор"

Я пытаюсь установить значение по умолчанию для поля Content Taxonomy в 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;
  }
}

Кто-нибудь может сказать мне, что мне не хватает?

Изменить: В ответ на Хенрик Опель (спасибо за участие), вот распечатка из соответствующего поля формы с моими изменениями в полях по умолчанию закомментированы, показывая поле '#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 ответа

Решение

Оказывается, ответ был в документации: http://drupal.org/node/319190

Я переименовал вопрос, чтобы было ясно, где проблема. Это сужает вопрос к довольно конкретному варианту использования, но и таксономия контента, и иерархический выбор являются полезными и рекомендуемыми модулями для работы с большими таксономиями.

(ПРИМЕЧАНИЕ: если предположить, что Drupal 6 здесь)

Глядя на локальный пример, мои поля таксономии контента не имеют свойства 'tids', но я использую только поля типа 'optionwidgets_buttons', поэтому это может отличаться, если вы используете другие типы виджетов. Не могли бы вы опубликовать дамп структуры поля Content Taxonomy из формы, которой вы пытаетесь манипулировать?

С другой стороны, у полей таксономии контента есть особая логика взаимодействия, касающаяся их "преобразования" обратно в стандартный формат массива таксономии позже в обработке формы / узла, что может повлиять на вас. Таким образом, ваша проблема в том, что ваши изменения значений по умолчанию вообще не отображаются при первоначальном отображении формы, или они показывают, но не обрабатываются позже?


Изменить (после обновления вопроса): Извините за поздний ответ. Я не уверен, но, глядя на определение вашего поля, тип показывает как hierarchical_select, который намекал бы на "автономный" иерархический виджет выбора. При использовании в сочетании с таксономией контента код из подмодуля 'hs_content_taxonomy' заставит меня ожидать тип content_taxonomy_hs вместо. Это всего лишь догадки, и у меня нет времени, чтобы самостоятельно проверить это локально, но вы можете проверить, используете ли вы правильную комбинацию / конфигурацию модулей.

Еще одна вещь - проверить настройки веса ваших модулей по отношению к модулю (ам) иерархического выбора - также просто дикая догадка, но, возможно, ваше изменение должно произойти до / после того, как иерархический выбор сделает свое волшебство, так что вы можете захотеть проверить с настроенными весами на вашем модуле.

Другие вопросы по тегам