Drupal 7 Captcha(すべてのWebフォームまたはコンテンツタイプごとのWebフォーム)


9

私はD7にいます。

Webフォームが有効になっているコンテンツタイプがあります。

要件 このコンテンツタイプのノードのすべてのWebフォームにキャプチャを実装する必要があります。

問題 D7では、フォームにキャプチャを取得するために設定ページでform_idを指定することになっていますが、私はすべての異なるform_idを持つフォームをロードします。

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 2013年

カスタムコードでCAPTCHAをスキップできるユーザーに設定された権限を尊重するには、ロジックに以下を追加します:if((strstr($ form_id、 'webform_client_form'))&&!(user_access( 'skip CAPTCHA'))){$ form ['my_captcha_element'] = array( '#type' => 'captcha'、 '#captcha_type' => 'default'、); }
kbrinner 2015

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をスキップできるユーザーのadmin / people / permissionsで設定された権限を尊重させるには、ロジックに以下を追加します。

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.