Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add custom Tab to user profile page Drupal 7

I am trying to add two new tabs to the user account page at mysite.com/user on my Drupal 7 site. I want to add links to Add Photos node/add/photos and Add Videos node/add/videos but the following code for my module user_menu_add is not working for me:

function user_menu_add_menu() {

$items['node/add/photos'] = array(
    'title' => t('Add Photos'),
    'page callback' => 'user_menu_add',
    'page arguments' => array(1),
    'access callback' => TRUE,
    'access arguments' => array('access user menu add'),
    'type' => MENU_LOCAL_TASK,
);

return $items;

}

an example i have referenced is here which works but only for links beneath the "/user" sub directory

function my_module_menu() {

$items['user/%user/funky'] = array(
    'title' => t('Funky Button'),
    'page callback' => 'my_module_funky',
    'page arguments' => array(1),
    'access callback' => TRUE,
    'access arguments' => array('access funky button'),
    'type' => MENU_LOCAL_TASK,
);

return $items;

}

Current User Tabs

like image 720
Lee Woodman Avatar asked Dec 16 '22 12:12

Lee Woodman


1 Answers

You can keep the node/add/photos menu item as is. You need to keep the URL pattern formatting like it is for the user/%user/addphoto in order to make the tab appear on the user profile page. However, try using drupal_goto() in your new menu item to redirect to the node/add/photos page.

Try this:

$items['user/%user/addphoto'] = array(
  'title' => t('Add Photos'),
  'page callback' => 'drupal_goto',
  'page arguments' => array('node/add/photos'),
  'access callback' => 'user_is_logged_in',
  'type' => MENU_LOCAL_TASK,
);

References:

  • drupal_goto()
  • user_is_logged_in()
  • Drupal 7 menu system
like image 178
Aiias Avatar answered Jan 07 '23 14:01

Aiias