Если каптча нужна для формы регистрации то делаем

Jun 1, 2015

Если каптча нужна для формы регистрации то делаем так:

  1. Копируем сниппет «modcaptcha.check_captcha», назовем его «modcaptcha.preHook» и немного меняем ему код, эти строки:
if($response->isError()){
    $result = $response->getMessage();
}
else{
    $result = 'true';
}

меняем на эти:

if($response->isError()){
    $result = false;
}
else{
    $result = true;
}

Это нужно для Login'а ибо прехук должен возвращать булево значение.

  1. В вызов сниппета Register добавляем 2 параметра:
&preHooks=`modcaptcha.preHook` 
&captcha_key=`mycaptcha`

первый это сниппет для прехука, второй ключ каптчи

  1. В форму регистрации добавляем
<input type="text" name="mycaptcha">
[[!$modcaptcha? &captcha_key=`mycaptcha`]]

После этих манипуляций должно работать.

PS У меня версия modx 2.3.3 там modCaptcha не заработал. Пришлось подправить немного процессор «modcaptcha/web/check», строку

$code = $this->getProperty('code');

заменил на

$code = $this->modx->request->parameters[$this->getProperty('method')][$key];

Не понятно ошибка это была или раньше modProcessor подгружал в свойства переменные из глобальных массивов, но в версии 2.3.3 этого не происходит.