Last updated July 24, 2015. Created on August 4, 2010.
Edited by Gold, authentictech, furious.snail, rreck. Log in to edit this page.

The Profile module is deprecated in Drupal 7, because it is now integrated in Drupal. It is kept around only to provide an upgrade path for Drupal 6 sites that used it.

For new Drupal 7 site you can use:

  • Admin > Configuration > People > Account settings > Manage fields
  • Another method is using Profile2 module, a successor of Content Profile Drupal 6 module

If you have started with a minimal install profile you will need to enable the Field UI module to access Manage fields via the Account settings.

Enabling the Profile module

Since the Profile module is deprecated and included with Drupal 7 for legacy reasons only, you are discouraged from using it. For this reason, the module is hidden by default, except for sites using the Profile module that were upgraded from an earlier version.

If you still need to enable the Drupal 7 Profile module, you can use one of the following options:

Command line (requires Drush)

If you have drush enabled, navigate to your site's directory and execute drush en profile.

Custom module

You can implement hook_system_info_alter() to show modules that are otherwise hidden.

Via the command line, starting in your Drupal site's sites/default/modules directory:

mkdir profile_unlock
cd profile_unlock/
vi profile_unlock.info
i

name = Profile Unlock
description = Unlock the core Profile module.
core = 7.x
files[] = profile_unlock.module

[esc] :wq
vi profile_unlock.module
i

<?php
function profile_unlock_system_info_alter(&$info, $file, $type) {
  if (
$type == 'module' && $file->name == 'profile') {
   
$info['hidden'] = FALSE;
  }
}
?>

[esc] :wq

  1. Navigate to the Modules page (Administer > Modules).
  2. Enable the checkbox beside the Profile Unlock module.
  3. Click Save configuration.

Profile module will now be enabled, and you can disable and uninstall Profile Unlock and remove the profile_unlock module folder.

You can extend Drupal 7 Profile module user profiles by adding an unlimited number of extra fields.

Adding a field to the user profiles

  1. Navigate to the Profiles page (Administer > Configuration > Account settings (People section) > Manage Fields).
  2. In the Add new field section, click a field type.
    The Add new field page displays.
  3. Enter the required information and configure any desired options.
  4. Click Save field.

Tips

  • If the Menu module is enabled, you can add the list of users as a menu item. For more information, see Working with menus in Drupal 7.
  • See the contributed modules for more options for modifying user profiles.

Looking for support? Visit the Drupal.org forums, or join #drupal-support in IRC.

Comments

berenddeboer’s picture

But what about the fields in core? They apply to users as well. That's what people should use I think?

The only issue is that fields do not show up on the registration form..

bitsman’s picture

Fields do show up on registration form. There is a check box which enables this.

xurizaemon’s picture

→ admin/config/people/accounts/fields
→ edit field
→ 'Display field on User Registration Page'

chiddicks’s picture

In order for you to edit User profile fields via the UI, the Field UI module must be enabled.

Neil_in_Chicago’s picture

My drupal 7 (beta) doesn't have a Profile module. Profile 2 doesn't do it either.
Administer > Configuration > People > Profiles only has Account settings and IP address blocking.

soul_discharge’s picture

This entry needs to be updated to clarify that the profile module will only be available if you are upgrading from Drupal 6 and had profile enabled. Apparently the profile module was a hold over from Drupal 4.x and stored data rather inefficiently. Now you are supposed to use admin/config/people/accounts/fields to add custom fields to your user account. However to display a special kind of field such as a click-able link you are still going to need a module as a link field is not part of core.

WebMaster’s picture

In Drupal 6, one could add the various fields to different "category" tabs, so like a "Personal Information" tab, "Account Information" tab on a user account edit page, etc. How is this done with Drupal 7?

donSchoe’s picture

Subscribing.

a blackhole is where drupal divided by zero

donSchoe’s picture

Again, what's the reason why it's discouraged to use this module in Drupal 7?

I activated the profiles module using the profiles_unlock module. I downloaded and installed the Profiles2 module.

I'm not able to add or modify any profile fields. It used to be so easy in Drupal 6.

Not working:

  • admin/config/people/profiles not existing. can't do anything.
  • admin/structure/profiles existing, but not able to modify any fields. all i can do is adding profile types.
  • admin/config/people/accounts/fields not existing. unable to create any fields.

Now I found out I have to actiavte the Field UI module. Still, what I get:

  • admin/structure/profiles/manage/main/fields now i have this link but clicking it tells me: page not found. can't do anything.
  • admin/structure/profiles/manage/main/display now i have this link but clicking it tells me: page not found. can't do anything.
  • admin/config/people/accounts/fields still not existing.

Now I found out I have to delete the main profile and create a custom profile. And suddenly I am able to create fields!

Hurray? No! After deleting the main profile there is no further connection between the user pages (user/1) and the profile (profile-xyz/1). Now I ended up in this issue.

Is it me who is failing or Drupal 7? Profiles in Drupal 6 where so smooth and easy to modify.

Okay, I confused myself using profiles_unlock and Profiles2 module at the same time. Profiles2 is pretty useless for my needs as it is not connecting user pages with the created profile pages. Go for the profile_unlock way and use the profiles of the core module:

  • admin/config/people/profile

a blackhole is where drupal divided by zero

flightrisk’s picture

Actually, not true, at least not now. Each new profile type will create a new tab on the user pages. To create views, you can simply add fields to the existing user account or use Profile2, create a view in the views module and in "relationships" add one and check the checkbox for "user:Profile". Once done, you will then see the fields you can add listed as "Profile:field_name".

cozzi’s picture

Flightrisk,

Could you please clarify your notation of "Each new profile type".

I'm looking at the Account Settings page (admin/config/people/accounts/fields) and I don't see how I would forcefully create a "new profile type" for people accounts (known I believe as "users" in pre D7)

Thank you
Cosmo

P.S. A bit of learning curve, but after a few hours I'm really taking to love D7. I know this is true because I'm actually considering upgrading some sites just for kicks!

P.P.S. As usual Drupal under sells the benefits of upgrading as I find things that are making me very happy as a long time Drupaler and that were not listed as features or benefits. This is especially true of D7.

Thanks to all Drupal developers - core & modules

flightrisk’s picture

Ah, the "Drupal Way" again, impossible to understand user interface ;) There are multiple ways to get custom fields added to a "profile". To keep the terminology straight as I understand it, there is the core "user entity" which replaced the included but disabled "Profile" module from D6 and then the add on modules like Profile2. So you can simply add fields in "admin/config/people/accounts/fields". The downside is that you can not easily format the user registration screen. You can change the view with the views and/or display suite modules, but not in drupal core for the registration screen and user edit screen. Also, there is no built in way to make any of those added fields invisible if you need that.

So, my two solutions at this point are to:

A. Add the fields as above in the ...people/accounts/fields link and then install the "field permissions" module and then add custom theming or...

B. Install the Profile2 module and add the fields there and take advantage of views. You will still need to edit something or do some themeing to fix the field order on the user edit and registration screens. To add new profiles with Profile2, you don't go to configure, you go to "admin/structure/profiles". There you get a "default" profile and can add any other you like such as "board member" or "customer". On the edit screens you have a profile tab and you select the one you want to edit seperately.

WH Hammond’s picture

subscribing

WH Hammond

dquark3’s picture

Currently I find the most straightforward method of unhiding the module (if you must) is to go to line 13 in 'profile.info' file.

Change:
hidden = TRUE

To:
hidden = FALSE
(or simply delete it)

Talawroks’s picture

Thanks for your help, now i added the profile module

Road Kill’s picture

The information provided Enabling the Profile module above is misleading and messy and whoever wrote it is a complete jack ass.

Don’t try and re-invent the wheel if it works don’t change it. Profile2 module is useless for what most people want to do and that is tapping into the user my account.

Thank you dquark3 for being so loud and clear.

jonathan_hunt’s picture

The documentation you criticize was added by mlncn (see http://drupal.org/node/874026/revisions/view/1132266/1248766 and http://drupal.org/user/64383 ). I note mlncn is a prolific contributor to the Drupal community. Rather than insult people, perhaps you could thank mlncn for offering documentation, or you could come up with some yourself?

Road Kill’s picture

Point noted but if people are going to post information they should be loud and clear and make sure that the information is correct otherwise it is useless to people seeking solutions, and by the way I do my fair share of contributing to the Drupal community by sharing what I have learned. There are many people in the Drupal community that are very happy to scream for help but never contribute. Also keep in mind that criticism help things move forward if people sit tight lipped we will never move forward.

leswebster’s picture

This is it! thanks man!

Cheers!

bitsman’s picture

This warning is misleading:

Use of the Profile2 module or creating fields directly on the user entity is recommended in Drupal 7

It implies that the profile2 module would be an recommended alternative to the user entity. But the latter is in core, while the profile2 is a module still in development, facing many issues. I would suggest the following modification:

Creating fields directly on the user entity is recommended in Drupal 7. You may also make use of the Profile2 module

aatkinson’s picture

"Creating fields directly on the user entity is recommended in Drupal 7"

Can someone explain how this is done? For a new user, navigating around the admin pages, it is not clear (to me at least).

Thanks
-Andrew

sentner’s picture

Yeah, I'm in the same boat... I'm new to Drupal and it seems like the documentation/tutorials for Drupal 7 are really lacking at this point.

rdemol’s picture

Go to yoursite.com/admin/config/people/accounts/fields

If you're not familiar with data types, check http://en.wikipedia.org/wiki/Data_type

westbywest’s picture

To be fair, the description provided under the "Account Settings" option in admin/config states "Configure default behavior of users, including registration requirements, e-mails, fields, and user pictures." And from there you need to click on the "Manage Fields" tab.

It is rather deeply buried in the admin menus.

Here is Drupal's documentation about adding fields via the Field UI:
http://drupal.org/documentation/modules/field-ui

Plus, this wiki page is also relevant:
http://en.wikipedia.org/wiki/Software_documentation#User_documentation

Ben West

hstrindb’s picture

julia_g’s picture

Is there a way to migrate user data from D6 Profile to D7 core user fields?

samgreco’s picture

Oh boy, do I need to know this.

Ejstrup’s picture

Don't you just love it when core modules are deprecated and you're left with no way to easily migrate your data :-P

berenddeboer’s picture

No.

ouyang1512’s picture

Really confused by the profile 2 module, and could not find any good documentation/tutorial on it.

jasmine’s picture

I had more than 10 field in my profile_module database, like "describe yourself", "birthday", "city" etc.
I made the upgrade making a backup of the database before starting (as recommended).
I then re-created the fields in Admin->Configuration->People, inserted the values on just one user profile, checked the database and found the data are stored in field_data_field_the-name-of-your-user-profile-field (in my first case field_data_field_describe_yourself.
I exported the D7 database field values, then with patience I modified the data of the profile_value of the same type of the D6 installation, I used a text editor to convert the D6 fields in a csv file, then opened with a spreadsheet editor, added the necessary columns, inserted the standard values like 'user' or NULL, saved as a csv, opened with a text editor and re-added the necessary items like parenthesis and comma, at the end copied all after the db statement INSERT INTO of field_data_field_describe_yourself, having care to delete the only row I exported.
With a mySQL Admin program I first deleted the row into the field (the one created to see the data format of the field), then imported the sql file saved with the D6 data adapted to the D7 database.
Since it is a long work, but I had more than 4000 user with a profile_module data, I excluded from recreate some profile data that are less important.
Hope this may help :)
Jasmine

MrPete’s picture

We made significant use of profile module fields in D6.

No warning that those fields are deprecated in D7.

And there's no migration path even being considered.

This is no way to run an airline :)

I now have very few hours to solve this roadblock before I can even get to the important part of my upgrade migration.

QUESTION: Where can we who discover this add a notice / warning to appropriate documents so others who follow are not burned? And I'm speaking IN GENERAL, not just about this core module...

Thanks!

debplatt’s picture

I just recently upgraded from Drupal 6.x to 7.8. I had two fields in the old user profile, so I used this to migrate. But now when I go to edit a user's profile, I am get a message like the one below in my logs:

Notice: Undefined index: 6237583f65d1e144445a2353a2175caa in block_form_user_profile_form_alter() (line 558 of /var/www/drupal/modules/block/block.module).

ehime’s picture

How do we prepopulate these with data?
For the life of me I couldn't find a way to alter these.

Lets say this generates (not sure but I assume it does)

$form['something']['firstName'] = array(
'#type' => 'textarea',
'#format' => 'plain_text',
'#title' => t('First Name: '),
'#default_value' => '', //nothing entered for default
);

Where and how would I set up something like this?

$form['something']['firstName'] = array(
'#type' => 'textarea',
'#format' => 'plain_text',
'#title' => t('First Name: '),
'#default_value' => variable_get('user_firstName'), // was set somewhere else
);

jpdaut’s picture

Did you find find how to make this work? I'm looking for the same.

S.Khatri’s picture

On the admin side, inside modules option. I can’t seem to access any roles/permissions which makes it difficult to configure new modules (for example google analytics)
Please suggest me.