diff options
-rw-r--r-- | dynamic_taxonomy.info | 5 | ||||
-rw-r--r-- | dynamic_taxonomy.module | 55 |
2 files changed, 60 insertions, 0 deletions
diff --git a/dynamic_taxonomy.info b/dynamic_taxonomy.info new file mode 100644 index 0000000..3627dbd --- /dev/null +++ b/dynamic_taxonomy.info @@ -0,0 +1,5 @@ +; $Id$ +name = Dynamic Taxonomy +description = Show taxonomy items in a dynamic select list. +core = 6.x +dependencies[] = taxonomy diff --git a/dynamic_taxonomy.module b/dynamic_taxonomy.module new file mode 100644 index 0000000..a78d33f --- /dev/null +++ b/dynamic_taxonomy.module @@ -0,0 +1,55 @@ +<?php +// $Id$ + +/** + * Implementation of hook_block(); + */ +function dynamic_taxonomy_block($op = 'list', $delta = 0, $edit = array()) { + switch ($op) { + case 'list': + $blocks[0]['info'] = t('Dynamic Taxonomy'); + $blocks[0]['cache'] = BLOCK_NO_CACHE; + return $blocks; + + case 'configure': + $form['dynamic_taxonomy_vid'] = array( + '#type' => 'radios', + '#title' => t('Select the vocabulary to list'), + '#default_value' => variable_get('dynamic_taxonomy_vid', 1), + '#options' => dynamic_taxonomy_get_vocabularies(), + ); + return $form; + + case 'save': + variable_set('dynamic_taxonomy_vid', (int) $edit['dynamic_taxonomy_vid']); + break; + + case 'view': + $vid = variable_get('dynamic_taxonomy_vid', 1); + $tree = dynamic_taxonomy_get_terms($vid); + $block['content'] = theme('item_list', $tree); + return $block; + } +} + +/** + * Get all vocabularies; + */ +function dynamic_taxonomy_get_vocabularies() { + $result = db_query('SELECT vid, name from {vocabulary}'); + while ($item = db_fetch_object($result)) { + $items[$item->vid] = $item->name; + } + return $items; +} + +function dynamic_taxonomy_get_terms($vid = null) { + if ($vid != null) { + $tree = taxonomy_get_tree($vid); + foreach ($tree as $term) { + $items[$term->tid] = $term->name; + } + return $items; + } + return null; +} |