2010-03-11 13 views
6

Biraz kafam karıştı. Tek bir metin kutusu ve bir gönder düğmesiyle basit bir form oluşturdum. Şimdi taxonomy_get_vocabularies() işlevini kullanarak bir seçme/seçenek açılır kutusu taksonomi ifadesi eklemek istiyorum.drupal - select/option listeye bir form ekle

$vocabularies = taxonomy_get_vocabularies('my_type'); 

Sorum ben "Drupal yolu" form üzerine kelime listesini almak yaparız. Drupal'ın formu tanımladığı şekil oldukça katı görünüyor. Ayrıca bu durumu nasıl yapabilirim, ilgili taksonomi terimlerinin varlığından bahsederim.

function my_form_name($form_state) { 

// A Short question. 
    $form['title'] = array(
    '#type' => 'textfield', 
    '#title' => t('Question'), 
    '#default_value' => $node->title, 
    '#required' => TRUE, 
    '#weight' => 1, 
    '#description' => t('A text box goes here '), 
); 

    $form['submit'] = array(
    '#type' => 'submit', 
    '#value' => t('submit'), 
    '#weight' => 7, 
); 

    return $form; 

cevap

11
Ben özel bir formda benzer bir şey yapıyorum

ve çok daha kolay işlevin argüman olarak kelime koduyla, taxonomy_get_tree kullanmak bulundu. Aşağıya bakın:

//get the list of locations from taxonomy to use in the dropdown 
$dropdown_source = taxonomy_get_tree(2); 
$dropdown_array = array('0' => '--none--'); 
foreach ($dropdown_source as $item) { 
$key = $item->tid; 
$value = $item->name; 
$dropdown_array[$key] = $value; 
} 

//location filter dropdown 
$form['filterset']['locationfilter'] = array(
    '#weight' => '1', 
    '#key_type' => 'associative', 
    '#multiple_toggle' => '1', 
    '#type' => 'select', 
    '#options' => $dropdown_array, 
    '#title' => 'Filter by location', 
); 

unset($dropdown_array); 
0

Hemen cevap için sınıflandırma modülünün taxonomy.admin.inc dosyasında

/** 
* Form builder to list and manage vocabularies. 
* 
* @ingroup forms 
* @see taxonomy_overview_vocabularies_submit() 
* @see theme_taxonomy_overview_vocabularies() 
*/ 
function taxonomy_overview_vocabularies() { 
    $vocabularies = taxonomy_get_vocabularies(); 
    $form = array('#tree' => TRUE); 
    foreach ($vocabularies as $vocabulary) { 
    ... 
0

sayesinde bunu nasıl araştır! Sanırım böyle çalıştım.

$form['limiter'] = array(
    '#type' => 'select', 
    '#title' => t('Choose a value'), 
    '#id' => 'limiter', 
    '#options' => get_faq_terms(), 
); 

function get_faq_terms() { 
    // get the vid value from vocabulary_node_types file 
    $result = db_query("SELECT * FROM vocabulary_node_types WHERE type = 'my_type' "); 
    $node = db_fetch_object($result) ; 
    $vid = $node->vid ; 

    // get corresponding term names from term_data file 
    $items = array(); 
    $terms = taxonomy_get_tree($vid); 
    foreach ($terms as $term) { 
     $count = taxonomy_term_count_nodes($term->tid); 
     if ($count) {  
      $items[$term->tid] = $term->name; 
     } 
    } 
+0

Sen mesajlara cevap verme yorumlarınızı kullanmalıdır, ek mesajları yapmak değil nasıl yapılacağı var kendi – jergason

+0

Üzgünüm, yorumumun "yorum" formatı için biraz ayrıntılı olduğunu düşündüm. Daha iyi bir çözümü varsa BTW lütfen bize bildirin. Ayrıca için bir örnek taxonomy_get_vocabularies() için yararlı olacaktır. –

1

bu drupal yoludur - _taxonomy_term_select()

+2

drupal 7 için değil – FLY

2

: Burada

Eğer doumentation sahip taxonomy_form modülüm (drupal 7) için bu yardımcı işlevi yazılmıştır:

Sonra $ forma #options bu işlevini çağırabilirsiniz:

$form['field_name'] = array( 
    '#options' => MYMODULE_get_tax_term_options('taxonomy_machine_name'), 
); 
1

İşte Drupal bunu 7

// Populate FAPI select box from vocabulary term values. 
// In this case term_reference field is field_category 
$form = array(); 
$form['category_default'] = array(
    '#type' => 'select', 
    '#title' => t('Default category'), 
    '#options' => taxonomy_allowed_values(field_info_field('field_category')), 
    '#description' => t('The selected category will be shown by default on listing pages.') 
); 
return $form;