it-swarm.com.de

Drupal 7 Captcha in allen Webforms oder Webforms pro Inhaltstyp

Ich bin auf D7.

Ich habe einen Inhaltstyp, der Webform aktiviert ist.

Voraussetzung Ich muss Captcha für alle Webformulare für Knoten dieses Inhaltstyps implementieren.

Problem In D7 sollten Sie die form_id auf der Einstellungsseite angeben, um Captcha im Formular zu erhalten. Ich werde jedoch eine Menge Formulare mit allen unterschiedlichen Formularen haben form_ids.

Ich benutze das Modul Captcha .

Gibt es eine Möglichkeit, meine Anforderung umzusetzen?

9
SGhosh

Sie können der template.php den folgenden Code hinzufügen

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

dies sollte im yourthemename_form_alter platziert werden

9

Alternativ können Sie diesen Code in ein benutzerdefiniertes Modul einfügen:

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

Quelle: https://drupal.org/node/255795

1
Antonello

Fügen Sie Ihrer Logik Folgendes hinzu, damit Ihr benutzerdefinierter Code die unter admin/people/permissions festgelegten Berechtigungen für diejenigen Personen berücksichtigt, die CAPTCHA überspringen können:

if ((strstr($form_id, 'webform_client_form')) && !(user_access('skip CAPTCHA'))) {
    $form['my_captcha_element'] = array(
      '#type' => 'captcha',
      '#captcha_type' => 'default',
    );
  }
0
kbrinner