Drupal 7 Captcha in tutti i moduli web o per i moduli web per tipo di contenuto


9

Sono su D7.

Ho un tipo di contenuto abilitato per il webform.

Requisito Devo implementare captcha per tutti i moduli web per i nodi di questo tipo di contenuto.

Problema In D7, dovresti dare form_id nella pagina delle impostazioni per ottenere captcha nel modulo, tuttavia avrò un sacco di moduli con tutti i diversi form_ids.

Sto usando il modulo Captcha .

C'è un modo per attuare il mio requisito?

Risposte:


9

Puoi aggiungere il seguente codice al tuo template.php

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

questo dovrebbe essere inserito all'interno di yourthemename_form_alter


Grazie. Ho appena trovato questa soluzione, ho funzionato, sono tornato per rispondere alla mia domanda e ho visto che ce l'hai già. :) Grazie per l'aiuto comunque.
SGhosh,

Per fare in modo che il tuo codice personalizzato rispetti le autorizzazioni impostate per quelle persone che possono saltare CAPTCHA aggiungi quanto segue alla tua logica: if ((strstr ($ form_id, 'webform_client_form')) &&! (User_access ('skip CAPTCHA'))) {$ form ['my_captcha_element'] = array ('#type' => 'captcha', '#captcha_type' => 'default',); }
kbrinner,

1

In alternativa puoi inserire questo codice in un modulo personalizzato:

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

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


0

Per fare in modo che il codice personalizzato rispetti le autorizzazioni impostate su admin / persone / autorizzazioni per quelle persone che possono saltare CAPTCHA, aggiungere quanto segue alla logica:

if ((strstr($form_id, 'webform_client_form')) && !(user_access('skip CAPTCHA'))) {
    $form['my_captcha_element'] = array(
      '#type' => 'captcha',
      '#captcha_type' => 'default',
    );
  }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.