You are here

function _taxonomy_menu_menu in Taxonomy menu 6

Same name and namespace in other branches
  1. 5 taxonomy_menu.inc \_taxonomy_menu_menu()

Implementation of hook_menu().

Its the main function for this module.

1 call to _taxonomy_menu_menu()
taxonomy_menu_menu in ./taxonomy_menu.module
Implementation of hook_menu().

File

./taxonomy_menu.inc, line 131
@author Jonathan Chaffer <jchaffer@structureinteractive.com> @author Bruno Massa <http://drupal.org/user/67164> taxonomy_menu.inc It Generates menu links for all taxonomy terms

Code

function _taxonomy_menu_menu() {
  $items['admin/settings/taxonomy_menu'] = array(
    'access arguments' => array(
      'administer site configuration',
    ),
    'description' => t('Global configuration of taxonomy menu functionality.'),
    'file' => 'taxonomy_menu.inc',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      '_taxonomy_menu_admin',
    ),
    'path' => 'admin/settings/taxonomy_menu',
    'title' => t('Taxonomy Menu settings'),
    'type' => MENU_NORMAL_ITEM,
  );
  foreach (taxonomy_get_vocabularies() as $vocab) {
    if (variable_get('taxonomy_menu_show_' . $vocab->vid, TAXONOMY_MENU_NONE)) {
      $path = variable_get('taxonomy_menu_display_page', 'category') . '/' . $vocab->vid;
      $items[$path] = array(
        'access arguments' => array(
          'access content',
        ),
        'file' => 'taxonomy_menu.inc',
        'page callback' => '_taxonomy_menu_page',
        'title' => t($vocab->name),
        'weight' => $vocab->weight,
      );
      $tree = taxonomy_get_tree($vocab->vid);
      $old_depth = -1;
      $old_path = $path;
      foreach ($tree as $term) {
        if ($term->depth <= $old_depth) {
          $slashes_to_remove = $old_depth - $term->depth + 1;
          for ($i = 0; $i < $slashes_to_remove; $i++) {
            $old_path = substr($old_path, 0, strrpos($old_path, '/'));
          }
        }
        $path = $old_path . '/' . $term->tid;
        $old_depth = $term->depth;
        $old_path = $path;

        // Calculate the numbers of children nodes
        $num = taxonomy_term_count_nodes($term->tid);

        // If the number of children nodes of this term is
        // zero and the Hide Empty Terms option is enabled,
        // dont create the menu item
        if (variable_get('taxonomy_menu_hide_empty', FALSE) == FALSE or $num != 0) {
          $name = t($term->name);
          if (variable_get('taxonomy_menu_display_num', FALSE) == TRUE) {
            $name .= ' (' . $num . ')';
          }
          $items[$path] = array(
            'access arguments' => array(
              'access content',
            ),
            'file' => 'taxonomy_menu.inc',
            'page callback' => '_taxonomy_menu_page',
            'description' => t($term->description),
            'title' => $name,
            'weight' => $term->weight,
          );
        }
      }
    }
  }
  return $items;
}