Index: taxonomy_breadcrumb.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/taxonomy_breadcrumb/taxonomy_breadcrumb.inc,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 taxonomy_breadcrumb.inc
--- taxonomy_breadcrumb.inc	13 Mar 2009 16:46:03 -0000	1.1.2.1
+++ taxonomy_breadcrumb.inc	18 Apr 2009 02:39:01 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: taxonomy_breadcrumb.inc,v 1.1.2.1 2009/03/13 16:46:03 mgn Exp $
+// $Id: $
 
 /**
  * @file
@@ -14,11 +14,26 @@
  * in the system table and is set in taxonomy_breadcrumb.install).
  */
 function _taxonomy_breadcrumb_term_page($str_tids = '', $depth = 0, $op = 'page') {
-  // Include the .inc file with all helper functions
-  require_once(drupal_get_path('module', 'taxonomy') .'/taxonomy.pages.inc');
-
-  // Call the core taxonomy_term_page function
-  $output = taxonomy_term_page($str_tids, $depth, $op);
+  static $callback = array();
+  if (empty($callback)) {
+    $callback = variable_get('taxonomy_breadcrumb_override_callback', array() );
+    if (!empty($callback)) {
+      $require_path = isset($callback['file path']) ? $callback['file path'] : drupal_get_path('module', $callback['module']);
+      require_once($require_path .'/'. $callback['file']);
+    }
+    else { // variable has not yet been set, default to core taxonomy_term_page callback
+      // Include the .inc file with all helper functions
+      require_once(drupal_get_path('module', 'taxonomy') .'/taxonomy.pages.inc');
+    }
+  }
+  if (isset($callback['page callback'])) {
+    $func = $callback['page callback'];
+    // assume that any function overriding the core taxonomy function would have the same parameters
+    $output = $func($str_tids, $depth, $op);  
+  }
+  else {   // Call the core taxonomy_term_page function
+    $output = taxonomy_term_page($str_tids, $depth, $op);
+  }
 
   // Use first term to generate breadcrumb trail
   $terms = taxonomy_terms_parse_string($str_tids);
Index: taxonomy_breadcrumb.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/taxonomy_breadcrumb/taxonomy_breadcrumb.module,v
retrieving revision 1.7.2.1
diff -u -r1.7.2.1 taxonomy_breadcrumb.module
--- taxonomy_breadcrumb.module	13 Mar 2009 16:46:03 -0000	1.7.2.1
+++ taxonomy_breadcrumb.module	18 Apr 2009 02:39:02 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: taxonomy_breadcrumb.module,v 1.7.2.1 2009/03/13 16:46:03 mgn Exp $.
+// $Id: $
 
 /**
  * @file
@@ -53,17 +53,6 @@
     'type' => MENU_NORMAL_ITEM, // optional
   );
 
-  // Similiar to core menu item in taxonomy_menu, except callback is different
-  $items['taxonomy/term/%'] = array(
-    'title' => 'Taxonomy term',
-    'file'              => 'taxonomy_breadcrumb.inc',
-    'page callback'     => '_taxonomy_breadcrumb_term_page',
-    'page arguments'    => array(2),
-    'access callback' => 'user_access',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
   return $items;
 }
 
@@ -98,6 +87,17 @@
 }
 
 /**
+ * Implementation of hook_menu_alter().
+ */
+function taxonomy_breadcrumb_menu_alter(&$callbacks) {
+  $existing_callback = $callbacks['taxonomy/term/%']; // Defined by taxonomy, but might be modified by another module
+  variable_set('taxonomy_breadcrumb_override_callback',$existing_callback);
+  $callbacks['taxonomy/term/%']['page callback'] = '_taxonomy_breadcrumb_term_page';
+  $callbacks['taxonomy/term/%']['file'] = 'taxonomy_breadcrumb.inc';
+  $callbacks['taxonomy/term/%']['file path'] = drupal_get_path('module', 'taxonomy_breadcrumb');
+}
+
+/**
  * Implementation of hook_help().
  */
 function taxonomy_breadcrumb_help($path, $arg) {
