Use profile field as token
2011 10 Sep

Use profile fields as tokens in user emails in Drupal

In Drupal, many a time I have found the need of using user profile values in my email configurations at "User Settings" and let the client use that too. The need for accessing Drupal user fields as tokens in user emails can be addressed with a very small piece of code. Let's say we need the tokens of profile first name, last name, full name and profile title like 'Mr.', 'Mrs.', etc, here is what we can do ...In Drupal, many a time I have found the need of using user profile values in my email configurations at "User Settings" and let the client use that too. The need to include custom tokens in the user registration emails can be addressed with a very small piece of code. Let's say we need the tokens of profile first name, last name, full name and profile title like 'Mr.', 'Mrs.', etc, here is what we can do:

  1. Alter the user settings form using hook_form_alter to mention the tokens that you want to use
  2. Now, we need to implement the hook mail alter to replace the tokens in the message and the subject of configured email

In Drupal, many a time I have found the need of using user profile values in my email configurations at "User Settings" and let the client use that too. The need for tokens in user emails can be addressed with a very small piece of code. Let's say we need the tokens of profile first name, last name, full name and profile title like 'Mr.', 'Mrs.', etc, here is what we can do:


1.Alter the user settings form using hook_form_alter to mention the tokens that you want to use

<?php /** * Implementation of hook_form_alter(). */ 
function example_form_alter(&amp;$form, &amp;$form_state, $form_id) {
  switch($form_id) {
    case 'user_admin_settings':
      if (is_array($form['email']) &amp;&amp; $form['email']['#type'] == 'fieldset') {
        foreach ($form['email'] AS $key =&gt; $value) {
          if (is_array($value) &amp;&amp; $value['#type'] == 'fieldset') {
            $form['email'][$key]['#description'] .= '<br />' . t('Also available variables are: ') . '!profile_first_name, !profile_last_name, !profile_full_name, !profile_title';
          }
        }
      }
      break;
  }
} 
?> 

2. Now, we need to implement the hook mail alter to replace the tokens in the message and the subject of configured email

&lt;?php
/**
 * Implementation of hook_mail_alter().
 */
function example_mail_alter(&amp;$message) {
  switch ($message['id']) {
    case "user_register_admin_created":
    case "user_register_no_approval_required": 
    case "user_register_pending_approval":
    case "user_password_reset": 
    case "user_status_blocked":
    case "user_status_deleted":
    case "logintoboggan_register_no_approval_required":
      $token_replacements = array(
        '!profile_first_name' =&gt; $message['params']['account']-&gt;profile_first_name,
        '!profile_last_name' =&gt; $message['params']['account']-&gt;profile_last_name,
        '!profile_full_name' =&gt; $message['params']['account']-&gt;profile_first_name . ' ' . $message['params']['account']-&gt;profile_last_name,
        '!profile_title' =&gt; $message['params']['account']-&gt;profile_title,
      );
      // You can also use $message['params']['account']-&gt;uid to get more values related to the user like number of new messages (privatemsg) he/she got on the site
      $message['subject'] = strtr($message['subject'], $token_replacements);
      $message['body'][0] = strtr($message['body'][0], $token_replacements);
      break;
  }
}
?&gt;

There are more ways than one to solve the same problem, and the same holds true for Drupal. Because in this case, the code gives me exactly what I need, no less no more, and is a short and easily comprehensive piece of code, I prefer it over any contributed module which offers me too much for a small piece of requirement.

Latest Blogs

UX/UI Synergy: Harmonizing Design for Success

The UX/UI Synergy: Harmonizing Design for Success

In the development and designing world, both UX and UI are the most commonly used terms for web and app designing.

Read More

Smart Website Design Fuels Business Growth

How Smart Website Design Fuels Business Growth ?

No doubt! With many people using the internet for business and information, owning a website has become more important than ever.

Read More

Top Trends in iOS Development Languages

Top Trends in iOS Development Languages: What's Next?

iOS development is always an exciting field; however, with millions of applications in the Apple Store, it is reaching an all-time high.

Read More

how to design a website

How to Design a Website: 8 Steps to Creating an Effective Site Design

In this day and age, having a website for a business is crucial to succeed.

Read More