سلام به همه دوستان تونلی
گاهی اوقات ممکن است لازم میباشد برای عضو گیری در سی ام اس جوملا اطلاعات بیشتری را از کاربر دریافت کنیم مانند شماره موبایل یا جنسیت و ...
شما برای این کار میتوانید از پلاگین هم استفاده کنید اما ما در این آموزش شما را با نحوه سفارشی سازی فرم ثبت نام با تغییر کد در هسته جوملا و دیتابیس این کار را ممکن سازیم..
ابتدا برای اضافه کردن هر فیلدی که میخواهید باید با استفاده از phpmyadmin یک ستون در جدول Jos_user ایجاد کنید، مثلا برای ساختن فیلد های آدرس و تلفن میتوانید بطور دستی این کار را انجام دهید یا عبارات زیر را در قسمت SQL اجرا کنید :

کد:
ALTER TABLE jos_users ADD phone varchar(255) DEFAULT '' AFTER password;
ALTER TABLE jos_users ADD address varchar(255) DEFAULT '' AFTER phone;
و حال فایل موجود در مسیر زیر را ویرایش کنید :
کد:
libraries\joomla\libraries\joomla\user\user.php
در قسمت بالای تابع construct (قبل از شروع هر تابعی از این کلاس) باید چند property تعریف کنید به ازای هر فیلد یک عدد! (دقت کنید هم نام ستونی باشد که در دیتابیس ساخته اید)

کد:
var $phone = null;
var $address = null;
*
**
*
/**
* خط پایین فقط برای مشخص کردن مکان دو خط بالاست و در کد موجود است
*/
function __construct( &$db )
پس از آن برای اینکه فیلد های تعریف شده در محیط مدیریت نمایش داده شود، باید فایل form.php را در مسیر زیر ویرایش کنید :
کد:
administrator\components\com_users\views\user\tmpl
بعد از خط 132 این کد ها را کپی کنید :

کد:
<tr>
<td width="150">
<label 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'); ?>" />
</td>
</tr>
<tr><td width="150">
<label for="address">
<?php echo JText::_( 'address' ); ?>
</label>
</td>
<td>
<input type="text" name="address" id="address" size="40" value="<?php echo $this->user->get('address'); ?>" />
</td>
</tr>
سپس برای اضافه کردن این فیلدها به فرم قسمت کاربران روی سایت فایل default.php را ویرایش کنید :
کد:
components\com_user\views\register\tmpl
بعد از خط 73 که ردیف پسورد تمام شد این کد را وارد کنید :

کد:
<tr>
<td 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->escape($this->user->get( 'phone' ));?>" maxlength="50" /> *
</td>
</tr>
<tr>
<td height="40">
<label id="addressmsg" for="address">
<?php echo JText::_( 'address' ); ?>:
</label>
</td>
<td>
<input type="text" name="address" id="address" size="40" value="<?php echo $this->escape($this->user->get( 'address' ));?>" maxlength="50" /> *
</td>
</tr>
در پایان برای این که در هنگام ویرایش مشخصات کاربران فیلدهای ایجاد شده نمایش داده شوند می بایست در مسیر زیر فایل form.php را ویرایش کنید :
کد:
components\com_user\views\user\tmpl
سپس بعد از خط 70 این عبارات را کپی کنید :

کد:
<tr>
<td width="120">
<label for="phone">
<?php echo JText::_( 'Phone' ); ?>:
</label>
</td>
<td>
<input type="text" id="phone" name="phone" value="<?php echo $this->escape($this->user->get('phone'));?>" size="40" />
</td>
</tr>
<tr>
<td width="120">
<label for="address">
<?php echo JText::_( 'address' ); ?>:
</label>
</td>
<td>
<input type="text" id="address" name="address" value="<?php echo $this->escape($this->user->get('address'));?>" size="40" />
</td>
</tr>
لازم به ذکر است که هربار اگر لازم شد فیلد جدیدی اضافه کنید این مراحل می بایست با همان نام به جای phone و address تکرار شود .
موفق باشید...