Значения по умолчанию для полей таксономии контента в Drupal с виджетом «Иерархический выбор» - PullRequest
4 голосов
/ 11 мая 2010

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

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

Edit: В ответ на 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 ]

3 голосов
/ 01 июня 2010

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

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

1 голос
/ 12 мая 2010

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

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

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


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

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

...