Drupal 7 Captcha trong tất cả các biểu mẫu web hoặc mỗi biểu mẫu web loại nội dung


9

Tôi đang trên D7.

Tôi có một loại nội dung được kích hoạt webform.

Yêu cầu Tôi cần triển khai captcha cho tất cả các biểu mẫu web cho các nút thuộc loại nội dung này.

Sự cố Trong D7, bạn phải cung cấp form_id trong trang cài đặt để nhận captcha ở dạng, tuy nhiên tôi sẽ có vô số biểu mẫu với tất cả các form_ids khác nhau.

Tôi đang sử dụng mô-đun Captcha .

Có cách nào để thực hiện yêu cầu của tôi?

Câu trả lời:


9

Bạn có thể thêm đoạn mã sau vào template.php của bạn

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

cái này nên được đặt bên trong yourthemename_form_alter


Cảm ơn. Tôi vừa nhận được giải pháp này, làm cho nó hoạt động, quay lại để trả lời câu hỏi của riêng tôi và thấy rằng bạn đã có. :) Tuy nhiên, cảm ơn sự giúp đỡ.
SGhosh

Để mã tùy chỉnh của bạn tôn trọng các quyền được đặt cho những người có thể bỏ qua CAPTCHA, hãy thêm đoạn mã sau vào logic của bạn: if ((strstr ($ form_id, 'webform_client_form')) &&! (User_access ('bỏ qua CAPTCHA'))) {$ biểu mẫu ['my_captcha_element'] = mảng ('#type' => 'captcha', '#captcha_type' => 'mặc định',); }
kbrinner

1

Ngoài ra, bạn có thể đặt mã này trong một mô-đun tùy chỉnh:

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

Nguồn: https://drupal.org/node/255795


0

Để mã tùy chỉnh của bạn tôn trọng các quyền được đặt tại quản trị viên / người / quyền đối với những người có thể bỏ qua CAPTCHA, hãy thêm đoạn mã sau vào logic của bạn:

if ((strstr($form_id, 'webform_client_form')) && !(user_access('skip CAPTCHA'))) {
    $form['my_captcha_element'] = array(
      '#type' => 'captcha',
      '#captcha_type' => 'default',
    );
  }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.