Drupal 7 Captcha we wszystkich formularzach internetowych lub w zależności od typu zawartości

9

Jestem na D7.

Mam typ zawartości z włączoną formą internetową.

Wymagania Muszę zaimplementować captcha dla wszystkich formularzy internetowych dla węzłów tego typu treści.

Problem W D7 należy podać form_id na stronie ustawień, aby uzyskać captcha w formularzu, jednak będę mieć mnóstwo formularzy ze wszystkimi różnymi form_id.

Korzystam z modułu Captcha .

Czy jest jakiś sposób na wdrożenie mojego wymagania?

SGhosh
źródło

Odpowiedzi:

9

Możesz dodać następujący kod do pliku template.php

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

należy to umieścić w nazwie twojego_formularza_formatu

Mohammed Shameem
źródło
Dzięki. Właśnie dostałem to rozwiązanie, zadziałało, wróciłem, by odpowiedzieć na moje pytanie i zobaczyłem, że już je masz. :) Mimo wszystko dziękuję za pomoc.
SGhosh
Aby kod niestandardowy był zgodny z ustawieniami uprawnień dla osób, które mogą pominąć CAPTCHA, dodaj do logiki następujące elementy: if ((strstr ($ form_id, 'webform_client_form')) &&! (User_access ('skip CAPTCHA'))) {$ form ['my_captcha_element'] = tablica ('#type' => 'captcha', '#captcha_type' => 'default',); }
kbrinner
1

Alternatywnie możesz umieścić ten kod w niestandardowym module:

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

Źródło: https://drupal.org/node/255795

Antonello
źródło
0

Aby Twój niestandardowy kod szanował uprawnienia ustawione w admin / people / permissions dla osób, które mogą pominąć CAPTCHA, dodaj następujące elementy do swojej logiki:

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