Drupal 7 Captcha in allen Webformularen oder Webformularen nach Inhaltstyp


9

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 viele Formulare mit allen verschiedenen form_ids haben.

Ich benutze das Captcha- Modul.

Gibt es eine Möglichkeit, meine Anforderung umzusetzen?

Antworten:


9

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


Vielen Dank. Ich habe gerade diese Lösung bekommen, sie zum Laufen gebracht, bin zurückgekommen, um meine eigene Frage zu beantworten, und habe gesehen, dass Sie sie bereits haben. :) Trotzdem danke für die Hilfe.
SGhosh

Damit Ihr benutzerdefinierter Code die Berechtigungen für diejenigen Personen berücksichtigt, die CAPTCHA überspringen können, fügen Sie Ihrer Logik Folgendes hinzu: if ((strstr ($ form_id, 'webform_client_form')) &&! (User_access ('CAPTCHA überspringen')) {$ form ['my_captcha_element'] = array ('#type' => 'captcha', '#captcha_type' => 'default',); }
Kbrinner

1

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


0

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',
    );
  }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.