Значения по умолчанию для полей таксономии контента в 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
вместо. Это всего лишь догадки, и у меня нет времени, чтобы самостоятельно проверить это локально, но вы можете проверить, используете ли вы правильную комбинацию / конфигурацию модулей.
Еще одна вещь - проверить настройки веса ваших модулей по отношению к модулю (ам) иерархического выбора - также просто дикая догадка, но, возможно, ваше изменение должно произойти до / после того, как иерархический выбор сделает свое волшебство, так что вы можете захотеть проверить с настроенными весами на вашем модуле.