رفتن به مطلب
shami123

فیلترکردن کلمات نامناسب در ارسال پست درانجمن سازکیوننا

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

سلام

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

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

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

 

فایل زیر را باز کنید:

components\com_kunena\controllers\topic.php

 

در قسمت مربوط به تابع

public function post()

 

در همون خطوط اول تابع بعد از اینکه مشخصات پست رو در آرایه ای به نام 

$fields

قرارمیده ،خطوط زیر را اضافه نمایید:

 

$filter = $this->filtered_words($fields['message']);

if ($filter) {
$this->app->enqueueMessage ( JText::_ ( $filter ), 'error' );
$this->redirectBack ();
}

تابع 

filtered_words()

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

resetvotes()

 

میباشد قرار دهید-قبل از علامت کروشه که بمعنای بسته شدن کلاس میباشد.

function filtered_words($message)
	{
		// EDIT THIS LINE!!!!!!!!!!!!!!!!!!!
		// THIS SHOULD BE ADMIN MAIL ADRESS
		$recipient = 'admin@yourjoomla.org';
		// EDIT THIS LINE!!!!!!!!!!!!!!!!!!!

		// read bad_words.txt
		if ($badwfh = fopen(JPATH_BASE.'/images/filtered_words.txt', 'r'))
		{
			
			while (!feof($badwfh))
			{
				$line = trim(fgets($badwfh));
				if (!empty($line))
				{
					$badwords[] = addslashes($line);
				}
			}
			fclose ($badwfh);

			// read post message in array
			$checkmessage = strtolower($message);

			$message_array = array();
			$message_array = preg_split('/[\s,\n\r\t]+/', $checkmessage);

			$found_words1 = array();
			$found_words2 = array();

			foreach ($badwords as $bad_word)
			{
				if (strstr($checkmessage, $bad_word))
				{
					$found_words1[] = $bad_word;
				}
			}

			$found_words2 = array_intersect($message_array, $badwords);

			$found_words = array_merge($found_words1, $found_words2);

			if (count($found_words) > 0)
			{
				foreach ($found_words as $bad_word)
				{
					$checkmessage = str_replace($bad_word, " *<b><span style='color: #FF0000;'>".$bad_word."</span></b>* ", $checkmessage);
				}
				
$msg = 'there are filtered words in your message'.'<hr>'.$checkmessage;
				
				return $msg;
			}
			else
				return false;
		}
		else
			return false;

	}   // filtered_words function

فایلی متنی به نام 

filtered_words.txt

 

 

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

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

 

امیدوارم مفید بوده باشه

بدرود...

ویرایش شده توسط داش سعید

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


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

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

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

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

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

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

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

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

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


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