Drupal 7 Captcha ใน webforms ทั้งหมดหรือต่อ webforms ประเภทเนื้อหา


9

ฉันเป็น D7

ฉันมีประเภทเนื้อหาที่เปิดใช้งานเว็บฟอร์มอยู่

ความต้องการ ฉันต้องใช้ captcha สำหรับ webforms ทั้งหมดสำหรับโหนดของประเภทเนื้อหานี้

ปัญหา ใน D7 คุณควรจะให้ form_id ในหน้าการตั้งค่าเพื่อรับ captcha ในรูปแบบอย่างไรก็ตามฉันจะโหลดแบบฟอร์มที่มี form_ids ที่แตกต่างกันทั้งหมด

ฉันใช้โมดูลCaptcha

มีวิธีใดบ้างที่จะปฏิบัติตามข้อกำหนดของฉัน

คำตอบ:


9

คุณสามารถเพิ่มรหัสต่อไปนี้ใน template.php ของคุณ

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

สิ่งนี้ควรอยู่ใน yourthemename_form_alter


ขอบคุณ ฉันเพิ่งได้โซลูชันนี้ทำงานได้กลับมาตอบคำถามของฉันเองแล้วเห็นว่าคุณมีอยู่แล้ว :) ขอบคุณสำหรับความช่วยเหลืออย่างไรก็ตาม
SGhosh

หากต้องการให้รหัสที่กำหนดเองของคุณเคารพสิทธิ์ที่กำหนดไว้สำหรับผู้ที่สามารถข้าม CAPTCHA เพิ่มสิ่งต่อไปนี้ในตรรกะของคุณ: ถ้า ((strstr ($ form_id, 'webform_client_form')) &&! (user_access ('ข้าม CAPTCHA')) {$ form ['my_captcha_element'] = array ('#type' => 'captcha', '#captcha_type' => 'ค่าเริ่มต้น',); }
kbrinner

1

หรือคุณสามารถใส่รหัสนี้ในโมดูลที่กำหนดเอง:

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

ที่มา: https://drupal.org/node/255795


0

หากต้องการให้รหัสที่กำหนดเองของคุณเป็นไปตามการอนุญาตที่กำหนดไว้ที่ผู้ดูแลระบบ / คน / การอนุญาตสำหรับผู้ที่สามารถข้าม CAPTCHA ให้เพิ่มสิ่งต่อไปนี้ในตรรกะของคุณ:

if ((strstr($form_id, 'webform_client_form')) && !(user_access('skip CAPTCHA'))) {
    $form['my_captcha_element'] = array(
      '#type' => 'captcha',
      '#captcha_type' => 'default',
    );
  }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.