Tüm web formlarında veya içerik türü web formlarında Drupal 7 Captcha


9

D7'deyim.

Web formu etkin bir içerik türüm var.

Gereksinim Bu içerik türünün düğümleri için tüm web formları için captcha uygulamam gerekiyor.

Sorun D7, form sayfasında captcha almak için ayarlar sayfasında form_id vermek gerekiyor, ancak tüm farklı form_ids ile formlar bir sürü olacak.

Captcha modülünü kullanıyorum .

Gereksinimi yerine getirmenin bir yolu var mı?

Yanıtlar:


9

Template.php dosyasına aşağıdaki kodu ekleyebilirsiniz.

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

bu, adınız_form_alter'ınızın içine yerleştirilmelidir


Teşekkürler. Bu çözümü yeni aldım, çalıştırdım, kendi sorumu cevaplamak için geri döndüm ve zaten sahip olduğunuzu gördüm. :) Yine de yardım için teşekkürler.
SGhosh

Özel kodunuzun CAPTCHA'yı atlayabilen kişiler için belirlenen izinlere uymasını sağlamak için mantığınıza şunları ekleyin: if ((strstr ($ form_id, 'webform_client_form')) &&! (User_access ('CAPTCHA' atla))) {$ form ['my_captcha_element'] = dizi ('#type' => 'captcha', '#captcha_type' => 'varsayılan',); }
kbrinner

1

Alternatif olarak, bu kodu özel bir modüle koyabilirsiniz:

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

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


0

Özel kodunuzun CAPTCHA'yı atlayabilecek kişiler için admin / people / izinlerinde ayarlanan izinlere uymasını sağlamak için, mantığınıza aşağıdakileri ekleyin:

if ((strstr($form_id, 'webform_client_form')) && !(user_access('skip CAPTCHA'))) {
    $form['my_captcha_element'] = array(
      '#type' => 'captcha',
      '#captcha_type' => 'default',
    );
  }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.