diff --git a/taxonomy/hansel_taxonomy.module b/taxonomy/hansel_taxonomy.module
index 89b2236..4b7b6e8 100644
--- a/taxonomy/hansel_taxonomy.module
+++ b/taxonomy/hansel_taxonomy.module
@@ -51,26 +51,39 @@ function hansel_taxonomy_action_add_term_path_get_crumbs($arguments) {
       return $data;
     }
     if ($node = node_load($nid)) {
-      if (empty($arguments['vid'])) {
-        $terms = taxonomy_node_get_terms($node);
-      }
-      else {
-        $terms = taxonomy_node_get_terms_by_vocabulary($node, $arguments['vid']);
+      $terms = array();
+      foreach (field_info_instances('node', $node->type) as $field => $info) {
+        if (isset($info['widget']['module']) && $info['widget']['module'] == 'taxonomy') {
+          $term_field = $node->$field;
+          foreach ($term_field[$node->language] as $term) {
+            if (isset($term['taxonomy_term'])) {
+              if ((empty($arguments['vid'])) || (!empty($arguments['vid']) && $term['taxonomy_term']->vid == $arguments['vid'])) {
+                $terms[$term['tid']] = $term['taxonomy_term'];
+              }
+            }
+          }
+        }
       }
-      if ($term = reset($terms)) {
+      foreach ($terms as $term) {
+        $link = array();
+        $link[$term->tid] = array(
+          'title' => $term->name,
+          'href' => 'taxonomy/term/' . $term->tid,
+        );
         $parents = taxonomy_get_parents_all($term->tid);
-        foreach ($parents as $term) {
-          $links[] = array(
-            'title' => $term->name,
-            'href' => 'taxonomy/term/' . $term->tid,
+        foreach ($parents as $parent) {
+          $link[$parent->tid] = array(
+            'title' => $parent->name,
+            'href' => 'taxonomy/term/' . $parent->tid,
           );
         }
-        $links = array_reverse($links);
+        foreach (array_reverse($link) as $tid => $value) {
+          $links[$tid] = $value;
+        }
       }
     }
     hansel_cache_set("taxonomy:n$nid", $links);
   }
-
   return $links;
 }
 
