diff -rup modules.orig/system/system.install modules/system/system.install
--- modules.orig/system/system.install	2008-05-15 22:55:58.000000000 +0200
+++ modules/system/system.install	2008-05-19 23:17:11.000000000 +0200
@@ -414,6 +414,9 @@ function system_install() {
   db_query("INSERT INTO {variable} (name, value) VALUES ('%s','%s')", 'filter_html_1', 'i:1;');
 
   db_query("INSERT INTO {variable} (name, value) VALUES ('%s', '%s')", 'node_options_forum', 'a:1:{i:0;s:6:"status";}');
+  
+  // Add the omitted node types for taxonomy.
+  db_query("INSERT INTO {variable} (name, value) VALUES ('%s', '%s')", 'taxonomy_omitted_node_types', 'a:2:{i:0;s:7:"article";i:1;s:4:"page";}');
 
   $cron_key = serialize(md5(mt_rand()));
 
diff -rup modules.orig/taxonomy/taxonomy.install modules/taxonomy/taxonomy.install
--- modules.orig/taxonomy/taxonomy.install	2008-01-08 08:46:41.000000000 +0100
+++ modules/taxonomy/taxonomy.install	2008-05-19 23:17:11.000000000 +0200
@@ -284,3 +284,13 @@ function taxonomy_schema() {
   return $schema;
 }
 
+function taxonomy_enable() {
+  // We check for the node_type count because in the install those ain't set
+  if (count(node_get_types()) > 0) {
+    taxonomy_update_omitted_node_types();
+  }
+}
+
+function taxonomy_uninstall() {
+  variable_del('taxonomy_omitted_node_types');
+}
\ No newline at end of file
diff -rup modules.orig/taxonomy/taxonomy.module modules/taxonomy/taxonomy.module
--- modules.orig/taxonomy/taxonomy.module	2008-05-06 14:18:51.000000000 +0200
+++ modules/taxonomy/taxonomy.module	2008-05-19 23:17:11.000000000 +0200
@@ -189,6 +189,25 @@ function taxonomy_menu() {
   return $items;
 }
 
+/**
+ * Update the omitted node types for taxonomy
+ */
+function taxonomy_update_omitted_node_types() {
+  // Setup an array with omitted node types so we can check for this in the nodeapi load
+  $rs = db_query(db_distinct_field('vnt', 'type', "SELECT vnt.type FROM {vocabulary_node_types} vnt"));
+  $omitted = array();  
+  $node_types = node_get_types();
+  while($row = db_fetch_array($rs)) {
+    unset($node_types[$row['type']]);
+  }
+  
+  foreach($node_types as $type) {
+    $omitted[] = $type->type;
+  }
+
+  variable_set('taxonomy_omitted_node_types', $omitted);
+}
+
 function taxonomy_save_vocabulary(&$edit) {
   $edit['nodes'] = empty($edit['nodes']) ? array() : $edit['nodes'];
 
@@ -202,7 +221,7 @@ function taxonomy_save_vocabulary(&$edit
     foreach ($edit['nodes'] as $type => $selected) {
       db_query("INSERT INTO {vocabulary_node_types} (vid, type) VALUES (%d, '%s')", $edit['vid'], $type);
     }
-    module_invoke_all('taxonomy', 'update', 'vocabulary', $edit);
+    module_invoke_all('taxonomy', 'update', 'vocabulary', $edit);    
     $status = SAVED_UPDATED;
   }
   else if (!empty($edit['vid'])) {
@@ -216,6 +235,8 @@ function taxonomy_save_vocabulary(&$edit
     module_invoke_all('taxonomy', 'insert', 'vocabulary', $edit);
     $status = SAVED_NEW;
   }
+  
+  taxonomy_update_omitted_node_types();
 
   cache_clear_all();
 
@@ -241,7 +262,7 @@ function taxonomy_del_vocabulary($vid) {
   }
 
   module_invoke_all('taxonomy', 'delete', 'vocabulary', $vocabulary);
-
+  taxonomy_update_omitted_node_types();
   cache_clear_all();
 
   return SAVED_DELETED;
@@ -1141,7 +1162,10 @@ function taxonomy_render_nodes($result) 
 function taxonomy_nodeapi($node, $op, $arg = 0) {
   switch ($op) {
     case 'load':
-      $output['taxonomy'] = taxonomy_node_get_terms($node);
+      $output['taxonomy'] = array();
+      if (!in_array($node->type, variable_get('taxonomy_omitted_node_types', array()))) {
+        $output['taxonomy'] = taxonomy_node_get_terms($node);
+      }
       return $output;
 
     case 'insert':
