diff --git a/modules/taxonomy.module b/modules/taxonomy.module index c2920a7c03a..ebcf4dd9c2d 100644 --- a/modules/taxonomy.module +++ b/modules/taxonomy.module @@ -31,7 +31,7 @@ function taxonomy_link($type, $node = NULL) { foreach ($node->taxonomy as $term) { $links['taxonomy_term_'. $term->tid] = array( '#title' => $term->name, - '#href' => 'taxonomy/term/'. $term->tid, + '#href' => taxonomy_term_path($term), '#attributes' => array('rel' => 'tag', 'title' => strip_tags($term->description)) ); } @@ -47,6 +47,14 @@ function taxonomy_link($type, $node = NULL) { } } +function taxonomy_term_path($term) { + $vocabulary = taxonomy_get_vocabulary($term->vid); + if ($vocabulary->module != 'taxonomy' && $path = module_invoke($vocabulary->module, 'term_path', $term)) { + return $path; + } + return 'taxonomy/term/'. $term->tid; +} + /** * Implementation of hook_menu(). */ diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module index c2920a7c03a..ebcf4dd9c2d 100644 --- a/modules/taxonomy/taxonomy.module +++ b/modules/taxonomy/taxonomy.module @@ -31,7 +31,7 @@ function taxonomy_link($type, $node = NULL) { foreach ($node->taxonomy as $term) { $links['taxonomy_term_'. $term->tid] = array( '#title' => $term->name, - '#href' => 'taxonomy/term/'. $term->tid, + '#href' => taxonomy_term_path($term), '#attributes' => array('rel' => 'tag', 'title' => strip_tags($term->description)) ); } @@ -47,6 +47,14 @@ function taxonomy_link($type, $node = NULL) { } } +function taxonomy_term_path($term) { + $vocabulary = taxonomy_get_vocabulary($term->vid); + if ($vocabulary->module != 'taxonomy' && $path = module_invoke($vocabulary->module, 'term_path', $term)) { + return $path; + } + return 'taxonomy/term/'. $term->tid; +} + /** * Implementation of hook_menu(). */