aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dynamic_taxonomy.info5
-rw-r--r--dynamic_taxonomy.module55
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;
+}