所有网络表单或按内容类型网络表单的Drupal 7 Captcha


9

我在D7上。

我的内容类型启用了网络表单。

要求 我需要为该内容类型的节点的所有Web表单实现验证码。

问题 在D7中,应该在设置页面中提供form_id以获取表单中的验证码,但是我将加载具有所有不同form_id的表单。

我现在用的是验证码模块。

有什么办法可以实现我的要求?

Answers:


9

您可以将以下代码添加到template.php

if (strstr($form_id, 'webform_client_form')) {
        $form['my_captcha_element'] = array(
            '#type' => 'captcha',
            '#captcha_type' => 'image_captcha/Image',
        );
    }

这应该放在yourthemename_form_alter里面


谢谢。我刚刚得到了这个解决方案,使其正常工作,回来回答了我自己的问题,发现您已经拥有了。:)仍然感谢您的帮助。
SGhosh

要使您的自定义代码遵守为可以跳过CAPTCHA的人员设置的权限,请在您的逻辑中添加以下内容:if((strstr($ form_id,'webform_client_form'))&&!(user_access('skip CAPTCHA'))){$ form ['my_captcha_element'] = array('#type'=>'captcha','#captcha_type'=>'default',); }
kbrinner 2015年

1

或者,您可以将此代码放在自定义模块中:

/**
* 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',
    );
  }
}

资料来源:https : //drupal.org/node/255795


0

要使您的自定义代码遵守那些可以跳过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',
    );
  }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.