رفتن به مطلب
رضاقاسمی

آموزش غیر ضروری کردن فیلد ایمیل ثبت نام جوملا 3

پست های پیشنهاد شده

با سلام و عرض خسته نباشید.

این آموزش قبلا برای جوملا 2.5 توسط استاد عزیزم جناب آقای میری نوشته شده بود که تا نسخه 3.3.6 جومینا کار میکرد.

هم اکنون مشکل این آموزش در نسخه 3.6.5 توسط یکی از کاربران محترم ، اطلاع داده شد که تصمیم گرفتم آموزش را مجددا برای جوملا 3.6.5 بنویسم.

در این نسخه شما میتوانید با تغییر زیر فیلد ایمیل را در جوملای خود غیرفعال کنید.

1. غیرفعال کردن ضروری بودن فیلد

برای اینکار ابتدا وارد آدرس زیر شوید:

\components\com_users\models\forms\registration.xml

این دو عبارت رو پیدا کنید:

<field
			name="email1"
			type="email"
			description="COM_USERS_REGISTER_EMAIL1_DESC"
			field="id"
			filter="string"
			label="COM_USERS_REGISTER_EMAIL1_LABEL"
			message="COM_USERS_REGISTER_EMAIL1_MESSAGE"
			required="true"
			size="30"
			unique="true"
			validate="email"
			autocomplete="email"
		/>

		<field
			name="email2"
			type="email"
			description="COM_USERS_REGISTER_EMAIL2_DESC"
			field="email1"
			filter="string"
			label="COM_USERS_REGISTER_EMAIL2_LABEL"
			message="COM_USERS_REGISTER_EMAIL2_MESSAGE"
			required="true"
			size="30"
			validate="equals"
		/>

خط required="true" رو در هر دو قسمت حذف کنید.

با اینکار فیلد ایمیل از حالت ضروری بودن در میاد.

2. غیرفعال کردن کد بررسی ایمیل خالی:

برای اینکار وارد آدرس زیر بشید:

\libraries\joomla\table\user.php

در خط 199 کد زیر رو پیدا کنید:

if (($filterInput->clean($this->email, 'TRIM') == "") || !JMailHelper::isEmailAddress($this->email))
{
	$this->setError(JText::_('JLIB_DATABASE_ERROR_VALID_MAIL'));

	return false;
}

به این صورت کامنتش کنید:

/*
if (($filterInput->clean($this->email, 'TRIM') == "") || !JMailHelper::isEmailAddress($this->email))
{
	$this->setError(JText::_('JLIB_DATABASE_ERROR_VALID_MAIL'));

	return false;
}
*/

3. حذف خطای: "این ایمیل از قبل ثبت شده است" :

برای حذف این خطا در همان فایل قبلی حدود خط 245 کد زیر را بیابید:

$query->clear()
		->select($this->_db->quoteName('id'))
		->from($this->_db->quoteName('#__users'))
		->where($this->_db->quoteName('email') . ' = ' . $this->_db->quote($this->email))
		->where($this->_db->quoteName('id') . ' != ' . (int) $this->id);
	$this->_db->setQuery($query);
	$xid = (int) $this->_db->loadResult();

و به کد زیر تغییر دهید:

$query->clear()
		->select($this->_db->quoteName('id'))
		->from($this->_db->quoteName('#__users'))
		->where($this->_db->quoteName('email') . ' = ' . $this->_db->quote($this->email))
		->where($this->_db->quoteName('id') . ' != ' . (int) $this->id)
		->where($this->_db->quoteName('email') . ' != ""');
	$this->_db->setQuery($query);
	$xid = (int) $this->_db->loadResult();

4. حذف خطای : "یک خطا در هنگام ارسال ایمیل ثبت نام رخ داده است" :

برای حذف این خطا نیز وارد فایل زیر شوید:

\components\com_users\models\registration.php

در حدود خط 610 تا 669 کد زیر را بیابید:

		// Check for an error.
		if ($return !== true)
		{
			$this->setError(JText::_('COM_USERS_REGISTRATION_SEND_MAIL_FAILED'));

			// Send a system message to administrators receiving system mails
			$db = $this->getDbo();
			$query->clear()
				->select($db->quoteName(array('name', 'email', 'sendEmail', 'id')))
				->from($db->quoteName('#__users'))
				->where($db->quoteName('block') . ' = ' . (int) 0)
				->where($db->quoteName('sendEmail') . ' = ' . (int) 1);
			$db->setQuery($query);

			try
			{
				$sendEmail = $db->loadColumn();
			}
			catch (RuntimeException $e)
			{
				$this->setError(JText::sprintf('COM_USERS_DATABASE_ERROR', $e->getMessage()), 500);

				return false;
			}

			if (count($sendEmail) > 0)
			{
				$jdate = new JDate;

				// Build the query to add the messages
				foreach ($sendEmail as $userid)
				{
					$values = array(
						$db->quote($userid),
						$db->quote($userid),
						$db->quote($jdate->toSql()),
						$db->quote(JText::_('COM_USERS_MAIL_SEND_FAILURE_SUBJECT')),
						$db->quote(JText::sprintf('COM_USERS_MAIL_SEND_FAILURE_BODY', $return, $data['username']))
					);
					$query->clear()
						->insert($db->quoteName('#__messages'))
						->columns($db->quoteName(array('user_id_from', 'user_id_to', 'date_time', 'subject', 'message')))
						->values(implode(',', $values));
					$db->setQuery($query);

					try
					{
						$db->execute();
					}
					catch (RuntimeException $e)
					{
						$this->setError(JText::sprintf('COM_USERS_DATABASE_ERROR', $e->getMessage()), 500);

						return false;
					}
				}
			}

			return false;
		}

آنرا بدین صورت کامنت کنید:

/*
		// Check for an error.
		if ($return !== true)
		{
			$this->setError(JText::_('COM_USERS_REGISTRATION_SEND_MAIL_FAILED'));

			// Send a system message to administrators receiving system mails
			$db = $this->getDbo();
			$query->clear()
				->select($db->quoteName(array('name', 'email', 'sendEmail', 'id')))
				->from($db->quoteName('#__users'))
				->where($db->quoteName('block') . ' = ' . (int) 0)
				->where($db->quoteName('sendEmail') . ' = ' . (int) 1);
			$db->setQuery($query);

			try
			{
				$sendEmail = $db->loadColumn();
			}
			catch (RuntimeException $e)
			{
				$this->setError(JText::sprintf('COM_USERS_DATABASE_ERROR', $e->getMessage()), 500);

				return false;
			}

			if (count($sendEmail) > 0)
			{
				$jdate = new JDate;

				// Build the query to add the messages
				foreach ($sendEmail as $userid)
				{
					$values = array(
						$db->quote($userid),
						$db->quote($userid),
						$db->quote($jdate->toSql()),
						$db->quote(JText::_('COM_USERS_MAIL_SEND_FAILURE_SUBJECT')),
						$db->quote(JText::sprintf('COM_USERS_MAIL_SEND_FAILURE_BODY', $return, $data['username']))
					);
					$query->clear()
						->insert($db->quoteName('#__messages'))
						->columns($db->quoteName(array('user_id_from', 'user_id_to', 'date_time', 'subject', 'message')))
						->values(implode(',', $values));
					$db->setQuery($query);

					try
					{
						$db->execute();
					}
					catch (RuntimeException $e)
					{
						$this->setError(JText::sprintf('COM_USERS_DATABASE_ERROR', $e->getMessage()), 500);

						return false;
					}
				}
			}

			return false;
		}
*/

سپس به این بخش در جوملای خود بروید:

ورود به بخش مدیریت -> مدیریت کاربران -> تنظیمات

در این بخش:

  • پارامتر "ارسال رمز عبور" را روی خیر تنظیم کنید.
  • و پارامتر "فعال سازی حساب کاربری جدید" را روی مدیریت سایت تنظیم کنید.

موفق و پیروز باشید.

یاعلی

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام . ممنون دوست عزیز . 

 

در فایل 

\components\com_users\models\forms\registration.xml

 عبارتی که فرمودید توی اون دو عبارت برای ما اصلا نبود !!!! 

 

مابقی قسمت ها را طبق گفته شما عوض کردیم اما صفحه ثبت نام سایت اصلا وارد میشیم کلا سفید میشه . 

 

باید چه کنیم ؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

با سلام

1. ابتدا بکاپ تهیه کنید

2. جوملای خود را به آخرین نسخه جومینا بروزرسانی کنید.

3. پچ زیر را در روت جوملای خود آپلود و اکسترکت کنید.

مشکل حل میشه.

path.zip

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام . 

وقت بخیر . 

ممنون . 

ما از جومینا استفاده نمی کنیم و از جوملای اصلی استفاده میکنیم . 

برای ان هم همین روش را طی کنیم ؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ممنون . چه طور میشود که کلا فلید ایمیل را حذف کرد و به جاش فلید شماره موبایل اضافه کرد ؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام اول کل آموزش رو انجام بدید بعد تو بخش اول آموزش یعنی

1. غیرفعال کردن ضروری بودن فیلد

برید و کلا اون تیکه کد رو حذف کنید.

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

موفق باشید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام

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

در صورتی که کاربر هیچ ایمیلی وارد نکنه میخوام حسابش فعال شه

متشکرم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

این بخش رو انجام ندادید:

سپس به این بخش در جوملای خود بروید:

ورود به بخش مدیریت -> مدیریت کاربران -> تنظیمات

در این بخش:

  • پارامتر "ارسال رمز عبور" را روی خیر تنظیم کنید.
  • و پارامتر "فعال سازی حساب کاربری جدید" را روی مدیریت سایت تنظیم کنید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید ارسال داشته باشید و بعد ثبت نام خود را در سایت کامل نمایید. اگر حساب کاربری در سایت دارید، جهت ارسال با حساب کاربری خود هم اکنون وارد سایت شوید

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • افزودن...