4

hook_form_alter で Content Taxonomy フィールドのデフォルト値を設定しようとしていますが、必要なフォーマットを特定できません。私はこれと多くのバリエーションを試しました:

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' フィールドを示します。

また、私が使用しているオプション ウィジェットが Hierarchical Select であることも示しています (これが要因でしょうか?)。上記のコードの 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 に答える