Adding more fields to the Joomla 1.5 Registration page

Adding more fields to the Joomla 1.5 Registration page

Warning: Joomla Hack! The following code involves modifying the core Joomla code. This has intrinisc drawbacks, i.e. any time you upgrade you'll have to redo the code, or lose this functionality

Make sure you take backups before you do this change! 

The Joomla Registration page usually contains enough information for most website. Users who want enhanced user information, typically go for Community Builder which allows extensive user registration fields. However, it is entirely possible to create additional registration fields without installing any components, by modifying a few lines in the Joomla core code. Here's how to do it.

In this example, we will be adding Business and Phone to the user registration field, however you can modify the example to add any fields you want to.

Step 1 - Add fields to the Users table

The first thing you need to do is to add the new fields into the Users table into the database. Using phpmyadmin or otherwise add the fields to the users tabl. The following SQL command adds the fields, however you can add these in any way you want:

 

ALTER TABLE jos_users ADD business VARCHAR (100) NO NULL AFTER name;
and
ALTER TABLE jos_users ADD phone VARCHAR (100) NO NULL AFTER business;


Once you have created the columns, verify that they have been created correctly and move on to the next step.

Step 2 - Modify the code

You'll need to modify a total of 4 files:

1. Modify the user class to include the new files in libraries/joomla/database/table/user.php

    var $name = null;
    /**
    * The login name
    *
    * @var string
    */

    var $username = null;

var $business = null;
var $phone = null;

2. Modify the code which displays the registration page components/com_user/views/register/tmpl/default.php 

    <tr>
    <td width="30%" height="40">
    <label id="namemsg" for="name"><?php echo JText::_( 'Name' ); ?>: </label> </td>
    <td>
    <input type="text" name="name" id="name" size="40" value="<?php echo $this->user->get( 'name' );?>" class="inputbox required" maxlength="50" /> * </td>
    </tr>

<tr>
<td width="30%" height="40">
<label id="businessmsg" for="business"><?php echo JText::_( 'Business' ); ?>: </label> </td>
<td>
<input type="text" name="business" id="business" size="40" value="<?php echo $this->user->get( 'business' );?>" class="inputbox required" maxlength="50" /> * </td>
</tr>
<tr>
<td width="30%" height="40">
<label id="phonemsg" for="phone"><?php echo JText::_( 'Phone' ); ?>: </label> </td>
<td>
<input type="text" name="phone" id="phone" size="40" value="<?php echo $this->user->get( 'phone' );?>" class="inputbox required" maxlength="50" /> * </td>
</tr>

     



    3. Modify the view of the users list: components/com_user/views/user/tmpl/form.php



    <tr>

      <td width="120">
      <label for="name">
      <?php echo JText::_( 'Your Name' ); ?>:
      </label>
      </td>
      <td>
      <input class="inputbox" type="text" id="name" name="name" value="<?php echo $this->user->get('name');?>" size="40" />
      </td>
      </tr>
      <tr>

    <td width="120">
    <label for="business">
    <?php echo JText::_( 'Business' ); ?>:
    </label>
    </td>
    <td>
    <input class="inputbox" type="text" id="business" name="business" value="<?php echo $this->user->get('business');?>" size="40" />
    </td>
    </tr>
    <tr>
    <td width="120">
    <label for="phone">
    <?php echo JText::_( 'Phone' ); ?>:
    </label>
    </td>
    <td>
    <input class="inputbox" type="text" id="phone" name="phone" value="<?php echo $this->user->get('phone');?>" size="40" />
    </td>
    </tr>

     

    4. Edit the page which displays the users in the backend: administrator\components\com_users\views\user\tmpl\form.php

    <tr>
                        <td class="key">
                            <label for="email">
                                <?php echo JText::_( 'Email' ); ?>
                            </label>
                        </td>
                        <td>
                            <input class="inputbox" type="text" name="email" id="email" size="40" value="<?php echo $this->user->get('email'); ?>" />
                        </td>
                    </tr>

    <tr>
                        <td class="key">
                            <label for="business">
                                <?php echo JText::_( 'Business' ); ?>
                            </label>
                        </td>
                        <td>
                            <input class="inputbox" type="text" name="business" id="business" size="40" value="<?php echo $this->user->get('business'); ?>" />
                        </td>
                    </tr>
                    <tr>
                        <td class="key">
                            <label for="phone">
                                <?php echo JText::_( 'Phone' ); ?>
                            </label>
                        </td>
                        <td>
                            <input class="inputbox" type="text" name="phone" id="phone" size="40" value="<?php echo $this->user->get('phone'); ?>" />
                        </td>
                    </tr>

     

    That's it! You now have a couple of additional fields in the users table, and more information available to use. Thanks goes to jtullous from the Joomla Forums who supplied the code.

    Make sure you take backups before you do this change!

       

    One more thing...

    Do you have friends or a Facebook group who you think would find this useful? Share this with them and then let me know what they think.

    Want to supercharge your website?

     
    Our website loads FAST ... just 1.29 seconds. We're hosted on FAST InMotion VPS servers We want YOUR website to be fast too, so we've gotten you an exclusive deal - 47% OFF for DART Creations friends + FREE domain! Check it out NOW!