私はD7にいます。
Webフォーム対応のコンテンツタイプがあります。
要件このコンテンツタイプのノードのすべてのWebフォームにキャプチャを実装する必要があります。
問題D7では、フォームでキャプチャを取得するために設定ページでform_idを指定することになっていますが、すべて異なるフォームがロードされますform_ids。
Captcha モジュールを使用しています。
私の要件を実装する方法はありますか?
次のコードをtemplate.phpに追加できます
if (strstr($form_id, 'webform_client_form')) {
$form['my_captcha_element'] = array(
'#type' => 'captcha',
'#captcha_type' => 'image_captcha/Image',
);
}
これはyourthemename_form_alter内に配置する必要があります
または、このコードをカスタムモジュールに配置することもできます。
/**
* Implementation of hook_form_alter().
*/
function mymodule_form_alter(&$form, $form_state, $form_id) {
if (preg_match("/^webform_client_form_[0-9]+$/",$form_id) && user_is_logged_in() == FALSE) {
$form['my_captcha_element'] = array(
'#type' => 'captcha',
);
}
}
カスタムコードに、CAPTCHAをスキップできるユーザーのadmin/people/permissionsで設定された権限を尊重させるには、ロジックに以下を追加します。
if ((strstr($form_id, 'webform_client_form')) && !(user_access('skip CAPTCHA'))) {
$form['my_captcha_element'] = array(
'#type' => 'captcha',
'#captcha_type' => 'default',
);
}