drupal 7リストフィールドのoptgroup


6

今、私は持っています

1 |都市名
2 |別の都市名
3 |小さな町名

コンテンツタイプフィールドを作成するときの値フィールド

生成されたhtmlで「optgroup」として表示されるグループにそれらの一部をラップするにはどうすればよいですか?

回答:


13

hook_FORM_ID_alterを使用して、次のようなコードを追加できます。

$form['FIELDNAME']['#options'] = array (

   'parent1' => array(
      3 => 'child1',
      4 => 'child2',
      5 => 'child3',
    ),
    'parent2' => array(
      8 => 'child1',
      9 => 'child2',
    ),
);

optgroupを使用しているときに、select要素に#multipleパラメータを追加するにはどうすればよいですか。試してみると、選択ボックスは、タイトルのarray()が付いた一連のチェックボックスに変わります。属性として複数を追加しようとしましたが、drupalは選択項目を認識せず、オプションを選択しなかったかのようにフォームを拒否しました。
PrestonDocks

5

hook_form-alter関数内でフォームAPIを使用すると、親子配列を生成でき、次にdrupal_renderがドロップダウンをレンダリングします。

    <? 
function mymodule_form_alter(&$form, &$form_state, $form_id) {     

    if ($form['#form_id'] == 'my_nodetype_node_form') {    
    $parents = taxonomy_get_tree($vid = 2 /*vocaulary ID*/, $parent = 0, $max_depth = 1);

    foreach ($parents as $term) {
      $options[$term->name] = array();
      $children = taxonomy_get_tree($term->vid, $term->tid);

      foreach ($children as $child) {
        $options[$term->name][$child->tid] = $child->name;
      }
    }
    //echo '<pre>';print_r($options);die;
    $form['the_taxonomy_terms_field']['und']['#options'] = $options;
    }
}
?>

クライヴに感謝します。作業時間を1/2時間節約できました。告白してもらえますか。あなたの答えの1つをもう一度コピーして貼り付け、タスクを閉じるためにもう一度キャッチしました。PS:私はこのコメントを投稿して少し作業しました...そして明らかに用語参照のform_idとフィールド名を変更します...そして、この語彙が他の場所で使用されているため、taxonomy_get_treeへの関数呼び出しで定数の$ vid変数を交換しましたノードキューの相互作用など。しかし、一体、あなたはまだほとんどの仕事をしました!!! ありがとう、友達。;)
stefgosselin 2013

0

optgroup selectと呼ばれるモジュールがあります。そのモジュールを試すことができます。

PS:私はモジュールのメンテナーです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.