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.