[development] Custom user data tab not displayed with hook_user

Jamie Holly hovercrafter at earthlink.net
Tue Mar 2 23:39:01 UTC 2010


Categories display as secondary tasks under the Edit tab. If you want a 
primary tab on top then yeah - you need to do a new menu hook like 
/user/%user/demographics with the type set to MENU_LOCAL_TASK

Jamie Holly
http://www.intoxination.net
http://www.hollyit.net


On 3/2/2010 3:10 PM, Steve Edwards wrote:
> I took over a site that has custom user data stored in a separate table, and I would like to display those fields in a separate tab in the user profile.  I figured I could just write a page and form function, but I'd like to integrate it with user data.  I have the following hook_user implementation:
>
> function hsi_user($op,&$edit,&$account, $category = NULL) {
> switch ($op) {
>   case 'categories':	
>        $data[] = array(
>          'name' =>  'hsi_demo',
>          'title' =>  'Demographics',
>          'weight' =>  3,
>          'access callback' =>  TRUE,
>        );
>        return $data;
>      case 'form':
> 	$data = db_fetch_object(db_query("SELECT bday, gender, nation, religion, heard FROM hsi_demo WHERE uid = %d", $account->uid));
> 	$countries = _hsi_countries();
> 	
>          $fields['hsi_demo']['bday'] = array(
> 	  '#type' =>  'date',
>            '#title' =>  'Birth Date',
>            '#default_value' =>  isset($edit[$field->name]) ? $edit[$field->name] : '',
>            '#required' =>  TRUE,
>          );
> 	$fields['hsi_demo']['gender'] = array(
> 	  '#type' =>  'select',
> 	  '#title' =>  'Gender',
> 	  '#options' =>  array('m' =>  'Male', 'f' =>  'Female'),
> 	  '#default_value' =>  $data->gender,
> 	);
> 	$fields['hsi_demo']['nation'] = array(
> 	  '#type' =>  'select',
> 	  '#title' =>  'Country',
> 	  '#options' =>  $countries,
> 	  '#default_value' =>  $data->nation,
> 	);
> 	$fields['hsi_demo']['denomination'] = array(
> 	  '#type' =>  'select',
> 	  '#title' =>  'Denomination',
> 	  '#options' =>  $countries,
> 	  '#default_value' =>  $data->denomination,
>            '#options' =>  $denominations,
> 	);
> 	return $fields;
>      }
> }
>
> The problem is, I don't get my Demographics tab displayed.  Do I also need a hook_menu entry for this path (i.e. user/%user/edit/hsi_demo)? What else am I missing?
>
> Thanks.
>
> Steve
>    


More information about the development mailing list