Drupal 7 Captcha di semua webforms atau per webforms tipe konten

9

Saya menggunakan D7.

Saya memiliki tipe konten yang diaktifkan webform.

Persyaratan Saya perlu menerapkan captcha untuk semua formulir web untuk node dari jenis konten ini.

Masalah Di D7, Anda seharusnya memberikan form_id di halaman pengaturan untuk mendapatkan captcha dalam formulir, namun saya akan memiliki banyak formulir dengan semua form_ids yang berbeda.

Saya menggunakan modul Captcha .

Apakah ada cara untuk mengimplementasikan persyaratan saya?

SGhosh
sumber

Jawaban:

9

Anda dapat menambahkan kode berikut ke template.php Anda

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

ini harus ditempatkan di dalam namamu namamu_form_alter

Mohammed Shameem
sumber
Terima kasih. Saya baru saja mendapatkan solusi ini, berhasil, kembali untuk menjawab pertanyaan saya sendiri dan melihat bahwa Anda sudah memilikinya. :) Terima kasih atas bantuannya.
SGhosh
Agar kode khusus Anda menghargai izin yang ditetapkan untuk orang-orang yang dapat melewati CAPTCHA tambahkan yang berikut ini ke logika Anda: if ((strstr ($ form_id, 'webform_client_form')) &&! (User_access ('skip CAPTCHA'))) {$ form ['my_captcha_element'] = array ('#type' => 'captcha', '#captcha_type' => 'default',); }
kbrinner
1

Atau Anda dapat meletakkan kode ini dalam modul khusus:

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

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

Antonello
sumber
0

Agar kode khusus Anda menghormati izin yang ditetapkan di admin / orang / izin untuk orang-orang yang dapat melewati CAPTCHA, tambahkan yang berikut ke logika Anda:

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