Why my hook_menu does not work? I have this code in the module cleanetica_advanced.

function cleanetica_advanced_menu() {

    $items['ajax/content/%'] = array(
      'page callback' => 'cleanetica_advanced_ajax_load',
      'page arguments' => array(2),
      'title' => 'Ajax content load',
      'access arguments' => array('access content'), 
      'type' => MENU_CALLBACK
    );

    $items['ajax/validate/form/%'] = array(
      'page callback' => 'cleanetica_advanced_ajax_validate_form',
      'page arguments' => array(3),
      'title' => 'Ajax validate form',
      'access arguments' => array('access content'), 
      'type' => MENU_CALLBACK
    );


    $items['user'] = array(
       'title' => 'blogs',
       'description' => 'Listing of blogs.',
       #'page callback' => 'blog_page',
       'access arguments' => array('access content'),
       'type' => MENU_DEFAULT_LOCAL_TASK
     );

    return $items;
}

For some reason the item "blogs" (which I created for testing only, there are no blogs in our site) does not show in the tabs of the page /users. I need to show it in the /users tabs. What is my error?

I checked that cleanetica_advanced module is loaded by inserting some nonsense in the .module file and seeing that the site ceases to work with an error message. (Then I removed the nonsense.)

By the way, does user in $items['user'] refer to the page where the menu should be shown or to the ID of the menu item itself?
"user" is a path already used by the User module; if your module is not executed after the User module (i.e. you are not altering the order hooks are executed), the menu item of the User module takes the precedence. (That is also the wrong way to alter the menu item defined from another module, but your purpose is not that.)

  // Registration and login pages.
  $items['user'] = array(
    'title' =&gt; 'User account',
    'title callback' =&gt; 'user_menu_title',
    'page callback' =&gt; 'user_page',
    'access callback' =&gt; TRUE,
    'file' =&gt; 'user.pages.inc',
    'weight' =&gt; -10,
    'menu_name' =&gt; 'user-menu',
  );


If you want to define a menu tab for each user account, as I think, the definition of your menu item should be similar to this, used from the User module.

  $items['user/%user/edit'] = array(
    'title' =&gt; 'Edit',
    'page callback' =&gt; 'drupal_get_form',
    'page arguments' =&gt; array('user_profile_form', 1),
    'access callback' =&gt; 'user_edit_access',
    'access arguments' =&gt; array(1),
    'type' =&gt; MENU_LOCAL_TASK,
    'file' =&gt; 'user.pages.inc',
  );


For example, something similar to the following would work.

  $items['user/%user/edit'] = array(
    'title' =&gt; 'Blogs',
    'description' =&gt; 'Listing of blogs.',
    'page callback' =&gt; 'cleanetica_advanced_blog_page',
    'page arguments' =&gt; array(1),
    'access arguments' =&gt; array('access content'),
    'type' =&gt; MENU_LOCAL_TASK,
  );



The page callback receives an argument: the user object for the user account. It will be called from Drupal as cleanetica_advanced_blog_page($account).
Every function implemented by a module needs to be prefixed by its short name.
The menu type is MENU_LOCAL_TASK since there is already a MENU_DEFAULT_LOCAL_TASK menu item, and there cannot be two MENU_DEFAULT_LOCAL_TASK; the other tab is also the tab showing the details for the user account, and it is better to keep that as default tab.


If you want to show a list of blog posts global for all the users, then you need to change the path from user, or user/%user/edit, to (for example) blogs. Adding it as tab of the user tab doesn't make any sense, since the page would list content, not a list of users; it would be also shown together user/login, user/register, and it doesn't make sense to show a list of blog posts to who is registering/logging in.