راه های تماس :
1 ابتدا با شناسه کاربری خود وارد سایت شوید
2 روی کلید سبز رنگ بالای سایت کلیک کنید
3منوی ارسال پست جدیدرا کلیک کنید .
  • ساعات مجاز برای تماس : 10 تا 16
  • روزهای کاری : شنبه تا 4شنبه
  • ایمیل : data(@)rastchin.com
 
اگر مشکل شما همچنان برقرار است یا سوالات دیگری دارید می توانید با تلگرام ما در ارتباط باشید
 

پرسش و پاسخ

در این بخش سوالات مربوط به راستچین کردن قالب ها و موارد مشابه بررسی و پاسخ داده می شود
ممکن است برای شما پیش آمده باشد که شاهد پر شدن فرم های سایت خود توسط ربات های اینترنتی و ارسال اسپم باشید. مسلما یک راهکار مناسب استفاده از کد ضد اسپم و یا همان captcha می باشد. افزونه k2 که بسیار کاربردی نیز میباشد تنها کد ضد اسپم repatcha را پشتیبانی می کند. در این روش شما باید عضو این سایت بوده و کد API خود را در پنل مدیریت k2 وارد کنید. مشکل آن است ک این گونه افزونه ها چندان برای زبان فارسی زیبا و مناسب نیستند!

در این آموزش روش استفاده از پلاگین ضد اسپم osolcaptcha برای کامپوننت k2 ( جوملا نسخه 2.5 و 3 )شرح داده می شود.
قبل از هرچیز لازم است پلاگین osolcaptcha را از سایت افزونه های جوملا دانلود نموده، نصب و فعال کنید :
دانلود افزونه osolCaptcha

حال برای نمایش پلاگین osolCaptcha در فرم ارسال نظر کامپوننت k2 :

1- ابتدا به بخش مدیریت پلاگین (plugin manager) رفته و پلاگین osolCaptcha را فعال کنید
2- به مسیر فایل components\com_k2\templates\default رفته و فایل item_comments_form.php را باز نموده و در ابتدای آن کد زیر را وارد کنید :


<script type="text/javascript">

do_nothing( function() {
onsubmitFunction = $('comment-form').get('onsubmit');
//alert($('comment-form').option.value);
$('comment-form').addEvent( 'submit', function(e){

var captchaResponse = true;
formInst = this;
osolCatchaTxtInst = this.osolCatchaTxtInst.value;
osolCatchaTxt = this.osolCatchaTxt.value;
//alert($('osolCaptcha-ajax-container'));
$('osolCaptcha-ajax-container0').addClass('osolCaptcha-ajax-loading');
$('osolCaptcha-ajax-container0').innerHTML = "Please wait while verifying captcha";

var request = new Request({

//url: 'http://localhost/demo/asphoto/index.php',

method:'get',

data: 'verifyCaptcha=True&instanceNo='+osolCatchaTxtInst+'&osolCatchaTxtInst='+osolCatchaTxt,

onSuccess: function(responseText){

//alert( responseText);
$('osolCaptcha-ajax-container0').removeClass('osolCaptcha-ajax-loading').innerHTML = '';
if(responseText == 'false')
{ document.getElementById('osolCatchaTxt0').value="";
//document.getElementById('option').value=""
alert("<?php echo JTEXT::_('OSOLCAPTCHA_ERROR_MESSAGE')?>")

captchaResponse = false;
}
else
{
//alert( onsubmitFunction);
if( eval(onsubmitFunction) || onsubmitFunction == null )
{

$K2('#formLog').empty().addClass('formLogLoading');
$K2.ajax({
url: $K2('#comment-form').attr('action'),
type: 'post',
dataType: 'json',
data: $K2('#comment-form').serialize(),
success: function(response){
$K2('#formLog').removeClass('formLogLoading').html(response.message);
if (response.refresh) {
window.location.reload();
}
}
});

document.getElementById('osolCatchaTxt0').value="";

}
}
}

}).send();
return false;
});
} );

</script>


3- در همین فایل درست قبل از کد عبارت <input type="submit" class="button" ک حدود خط 45 می باشد کد زیر را قرار دهید :

<?php
//set the argument below to true if you need to show vertically( 3 cells one below the other)
JFactory::getApplication()->triggerEvent('onShowOSOLCaptcha', array(true))
?>

کد بالا، پلاگین را در فرم ارسال نظر فعال می کند.
4- به فایل com_k2\models\item.php رفته و حدود خط 1190 درست قبل از if (!JMailHelper::is کد زیر را وارد کنید :

$spamControl = JRequest::getString('osolCatchaTxt', '', 'default');

if (empty($spamControl) || empty($userName) || $userName == JText::_('K2_ENTER_YOUR_NAME') || empty($commentText) || $commentText == JText::_('K2_ENTER_YOUR_MESSAGE_HERE') || empty($commentEmail) || $commentEmail == JText::_('K2_ENTER_YOUR_EMAIL_ADDRESS'))
{
$response->message = JText::_('K2_YOU_NEED_TO_FILL_IN_ALL_REQUIRED_FIELDS');
echo $json->encode($response);
$mainframe->close();
}



5- مرحله آخر : باتوجه به اینکه پلاگین osolCaptcha بصورت آژاکس کد وارد شده توسط کاربر را چک می کند و همچنین بقیه فیلدها توسط k2 بصورت آژاکس بررسی می شود، به منظور اینکه این ترتیب چک کردن ها، مشکلی ایجاد نکند لازم است به فایل media\k2\assets\js\k2.frontend.js رفته و حدود خط 60 کدهای زیر را حذف کنید


$K2('#comment-form').submit(function(event){

event.preventDefault();
$K2('#formLog').empty().addClass('formLogLoading');
$K2.ajax({
url: $K2('#comment-form').attr('action'),
type: 'post',
dataType: 'json',
data: $K2('#comment-form').serialize(),
success: function(response){
$K2('#formLog').removeClass('formLogLoading').html(response.message);
if(typeof(Recaptcha) != "undefined"){
Recaptcha.reload();
}
if (response.refresh) {
window.location.reload();
}
}
});

});


اگر کلیه موارد بالا را انجام داده باشید، باید هم اکنون کد ضد اسپم در فرم ارسال نظر مشاهده و بدرستی کار کند.
فایل هایی ک در مجموع تغییر یافت 3 مورد می باشد که پیوست این پست شده است. می توانید فایل ها را جایگزین کنید

توجه :
1- این راهنما برای آخرین نگارش جوملا ( 3.8.1 ) ،آخرین نگارش کامپوننت k2 (یعنی 2.8) و آخرین نسخه اوسول کپچا (3.1) تست شده است
2- بعضی قالب های جوملا، در فولدر html خود دارای فولدر com_k2 می باشند. در این صورت شما باید برای ویرایش یا جایگزینی فایل item_comments_form.php بجای مسیر components\com_k2\templates\default به مسیر templates\[your template]\html\com_k2\default بروید.
پیوست (2)
  1. رضا علایی
  2. سیستم مدیریت محتوا - جوملا 3
  3. دوشنبه, 27 مهر 1394


پاسخی یافت نشد
اولین نفر باشید!
پست جاری قفل شده است
بالا