Optgroup im Listenfeld von Drupal 7

6

Jetzt habe ich gerne

1 | Städtename
2 | Ein anderer Städtename
3 | Kleiner Städtename

im Wertefeld beim Erstellen des Inhaltstypfelds

Wie kann ich einige davon in eine Gruppe einbinden, die in HTML als "optgroup" angezeigt wird?

Konstantin Bodnia
quelle

Antworten:

13

Sie können einen hook_FORM_ID_alter verwenden und dann Code wie folgt hinzufügen:

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

   'parent1' => array(
      3 => 'child1',
      4 => 'child2',
      5 => 'child3',
    ),
    'parent2' => array(
      8 => 'child1',
      9 => 'child2',
    ),
);
uwe
quelle
Wie kann ich bei Auswahl von optgroups auch den Parameter #multiple zu einem ausgewählten Element hinzufügen? Wenn ich es versuche, wird mein Auswahlfeld zu einer Reihe von Kontrollkästchen mit dem Titelarray (). Ich habe versucht, mehrere als Attribut hinzuzufügen, aber dann erkennt drupal keine der Auswahlen und lehnt das Formular ab, als hätte ich keine Option ausgewählt.
PrestonDocks
5

Mit der Forms-API in der Funktion hook_form-alter können Sie ein Eltern-Kind-Array generieren. Dann rendert drupal_render das Dropdown-Menü.

    <? 
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;
    }
}
?>
B Ravanbakhsh
quelle
Danke Clive. Hat mir 1/2 Stunden Arbeit erspart! Darf ich gestehen, habe mich gerade dabei erwischt, eine Ihrer Antworten noch einmal zu kopieren , um eine Aufgabe zu schließen. PS: Ich habe ein wenig gearbeitet, indem ich diesen Kommentar gepostet habe ... und offensichtlich die form_id und den Feldnamen der Termreferenz geändert habe ... und die Variable $ vid gegen eine Konstante im Funktionsaufruf gegen taxonomy_get_tree ausgetauscht habe, da dieses Vokabular an anderen Stellen verwendet wird für Nodequeue-Interaktion und so. Aber zum Teufel, du hast immer noch die meiste Arbeit gemacht !!! Danke Freund. ;)
stefgosselin