Drupal 7 Captcha у всіх веб-формах або на веб-формах типу вмісту


9

Я на D7.

У мене є тип вмісту, який увімкнено веб-формою.

Вимога. Мені потрібно впровадити капчу для всіх веб-форм для вузлів цього типу вмісту.

Проблема У 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, додайте до вашої логіки таке: if ((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',
    );
  }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.