_$vid * $options[value] * default - optional. this is what will be used if the varialbe is not set. if empty then FALSE is used * #title - required. * any other form element */ function taxonomy_menu_path_custom_taxonomy_menu_options() { $options['taxonomy_menu_path_custom_depth'] = array( '#title' => t('Display depth in custom path'), '#weight' => -2, '#description' => t("Only used with a custom path.
To use depth the path in the view has to have the path of '/%/%'. The two arguments must be 'Term ID (with depth)' and 'Depth modifier'.
Have this view setup before you create this taxonomy menu. Otherwise leave this field empty!"), 'default' => '', '#type' => 'textfield', ); $options['taxonomy_menu_path_custom_base_path'] = array( '#title' => t('Base path for custom path'), '#weight' => -3, '#type' => 'textfield', 'default' => 'category', '#description' => t("Only used with a custom path.
You need to have a view with path 'custom path/%' and an argument 'Term ID' before you create this taxonomy menu."), ); $options['taxonomy_menu_path_custom_use_term_name'] = array( '#title' => t('Use term name'), '#weight' => -1, '#type' => 'checkbox', 'default' => '', '#description' => t("If checked, use term name instead of term ID."), ); return $options; } /** * Implementation of hook_taxonomy_menu_path(). */ function taxonomy_menu_path_custom_taxonomy_menu_path() { $output = array( 'taxonomy_menu_path_custom_path' => t('Custom path'), ); return $output; } /** * Callback for taxonomy_menu_path */ function taxonomy_menu_path_custom_path($vid, $tid) { $base_path = variable_get('taxonomy_menu_taxonomy_menu_path_custom_base_path_'. $vid, 'category'); $depth = variable_get('taxonomy_menu_taxonomy_menu_path_custom_depth_'. $vid, ''); //if tid = 0 then we are creating the vocab menu item format will be taxonomy/term/$tid+$tid+$tid.... if ($tid == 0) { //get all of the terms for the vocab $vtids = _taxonomy_menu_get_terms($vid); $end = implode(' ', $vtids); $path = $base_path .'/'. $end; } else { $path = $base_path .'/'. $tid; if (variable_get('taxonomy_menu_display_descendants_'. $vid, FALSE)) { //we wait to run this instead of durning the if above //because we only wan to run it once. $terms = taxonomy_get_tree($vid, $tid); foreach ($terms as $term) { $tids[] = $term->tid; } if ($tids) { $end = implode(' ', $tids); $path .= ' '. $end; } } } if ($depth != '') { $path .= '/'. $depth; } if(variable_get('taxonomy_menu_taxonomy_menu_path_custom_use_term_name_'. $vid, false)) { $tids = ($tids) ? $tids : array($tid); foreach($tids as $tid) { $term = taxonomy_get_term($tid); $names[] = strtolower(str_replace(' ','-',$term->name)); } $path = $base_path .'/'. implode(' ',$names); } return $path; }