اضافه کردن فیلد جدید به فرم ثبت نام جوملا

ممکن است برای عضو گیری جوملا لازم باشد اطلاعات بیشتری را از کاربر دریافت کنید مثلا تلفن یا آدرس و …

این کار را یک پلاگین تجاری برای شما انجام می دهد ، اما اگر این نوشته را تا انتها دنبال کنید و اطلاعات مختصری از HTML داشته باشید میتوانید بدون استفاده از هیچ پلاگینی و تنها با تغییر کدهای هسته ی جوملا و دیتابیس به سادگی فرم ثبت نام جوملا را سفارشی کنید .

ابتدا برای هر فیلدی که میخواهید اضافه کنید می بایست با 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 تکرار شود .


18 پاسخ به “اضافه کردن فیلد جدید به فرم ثبت نام جوملا”

  1. محمد سیفی گفت:

    توی جوملا 1.5 مسیر زیر متفاوت هست
    libraries\joomla\libraries\joomla\user\user.php
    به
    libraries\joomla\database\table\user.php

  2. iman گفت:

    سلام
    عالی بود.عالییییییییییییی

  3. iman گفت:

    سلام
    آموزشتون عالی بود ولی دوست عزیز اگر بخوام برخی از فیلدهام الزامی باشه باید چکار کنم؟؟ممنونم

  4. myproject گفت:

    با سلام
    اين آموزش مربوط به جوملا1.5 است؟ براي ايجاد فيلد جديد فايلهاي ذكر شده در اين مسيرها در جوملا3 وجود ندارند!

  5. mostafa گفت:

    سلام ، میشه لطفا نحوه ی ساخت فیلد های آبشاری و چک باکس رو بگید ؟ ممون میشم ازتون

  6. mostafa گفت:

    آقا هرکاری می کنم به مشکل بر می خورم، خواشا میشه خودتون یه مثال هم برای چک باکس هم برای آبشاری بزنید؟
    ——————————————-
    مشکل من اینجاست که مثلا یه فیلد داریم با اسم (جنسیت : مرد زن)
    من در قسمت مدیریت چکار باید بکنم تا وقتی کاربر مثلا مرد را انتخاب کرد در قسمت مدیریت اطلاعات کاربر نمایش داده بشه.
    خواهشا یه نمونه مثال بزنید ، ممنون میشم ازتون

  7. علی گفت:

    ممنون از مطالب مفیدتان

  8. kh گفت:

    سلام مرسی از مطلبهای خوبی که گذاشتین.شما اهل کجا هستین؟

  9. fera گفت:

    سلام
    نوشته هاتون عالییییییییییییه
    این جدول که اول می فرمایید جوملا 2.5 کجاست؟؟؟
    خیلی حیاتیه
    اگه جواب بدین خیلی ممنون میشم

  10. علیرضا گفت:

    سلام و خسته نباشید
    ممنون از مطالب مفید شما. با توجه به اینکه بیش از یک سال از ارسال پست بالا می گذره، خواستم ببینم ایا برای جوملا 3 هم این ویرایش قابل انجام است، به نظر فایل های مورد نیاز برای ویرایش متفاوت و در فولدرهای دیگری هستند. خواهشمند است اگر مقدور است راهنمایی بفرمایید.

    علیرضا
    09121016235

  11. آرمان گفت:

    به درد نمی خوره چون وقتی هسته ی جوملا آپدیت میشه این فایل ها اوررایت می شن. بهتره هسته جوملا دست نخوره و از یه پلاگین یا کامپوننت استفاده بشه

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *