Recently I came across a new module in Drupal, Advanced profile. This module is cool because it hooks up with a bunch of other modules and helps you get a really good user profile setup. It also has a nice drag and drop interface for the admin. Using panels, node profiles etc you can create a very nice user dashboard. You can read more about advanced profile here.
Advanced profile is a relatively new module, its still in alpha and therefore has limited display options. I had created a view that I wanted on my user profile page but the module right now supports only 2-3 pre-defined views like buddylist etc. For the some of us who cant wait here’s a small hack on how you can get any view to be displayed in your profile.
- Create the view you need to display. Choose the export option for the view. This will dump the exported contents on your screen. Here’s what I got when I exported my view.
$view = new stdClass();
$view->name = 'user_regs';
$view->description = 'All Registrations';
$view->access = array (
0 => '3',
);
$view->view_args_php = '';
$view->page = TRUE;
$view->page_title = '';
$view->page_header = '';
$view->page_header_format = '1';
$view->page_footer = '';
$view->page_footer_format = '1';
$view->page_empty = '';
$view->page_empty_format = '1';
$view->page_type = 'table';
$view->url = 'user/myregistrations';
$view->use_pager = TRUE;
$view->nodes_per_page = '10';
$view->block = TRUE;
$view->block_title = 'registrations';
$view->block_header = '';
$view->block_header_format = '1';
$view->block_footer = '';
$view->block_footer_format = '1';
$view->block_empty = '';
$view->block_empty_format = '1';
$view->block_type = 'table';
$view->nodes_per_block = '5';
$view->block_more = TRUE;
$view->block_use_page_header = FALSE;
$view->block_use_page_footer = FALSE;
$view->block_use_page_empty = FALSE;
$view->sort = array (
);
$view->argument = array (
);
$view->field = array (
array (
'tablename' => 'node_data_field_tracking_number',
'field' => 'field_tracking_number_nid',
'label' => 'Tracking Number',
'handler' => 'content_views_field_handler_group',
'options' => 'default',
),
array (
'tablename' => 'node',
'field' => 'title',
'label' => 'Status Report',
'handler' => 'views_handler_field_nodelink',
'options' => 'link',
),
array (
'tablename' => 'node',
'field' => 'created',
'label' => 'Created',
'handler' => 'views_handler_field_date_small',
),
array (
'tablename' => 'node_data_field_test_status',
'field' => 'field_test_status_value',
'label' => 'Status',
'handler' => 'content_views_field_handler_group',
'options' => 'default',
),
);
$view->filter = array (
array (
'tablename' => 'node',
'field' => 'type',
'operator' => 'OR',
'options' => '',
'value' => array (
0 => 'cck_status',
),
),
);
$view->exposed_filter = array (
);
$view->requires = array(node_data_field_tracking_number, node, node_data_field_test_status);
$views[$view->name] = $view;
- Save the above contents in a file called view-registrations_of_uid.inc(view-yourviewname.inc). Save this file in advancedprofile/advprofile/.
- Edit advanced_profile.css present in the advprofile directory and add the following contents:(view-yourviewname)
.view-registrations-of-uid .thumbnail {
float: left;
width: 100px;
height: 140px;
border: 1px solid #3192CE;
margin: 10px;
padding: 5px;
text-align: center;
}
.view-registrations-of-uid img {
width:85px;
}
- Edit advanced_profile.module and add the following line to the advanced_profile_views_default_views() .
eval(file_get_contents($views_dir . 'view-registrations_of_uid.inc'));
Again remember to replace the filename in the example with the .inc file you created.
That’s about it and your custom view will now be available to choose and display in the content display window. This way you can make any view available for the advanced profile module.