Adicionando um checkbox de inscrição de newsletter no formulário de contato do Drupal.

Hoje vou mostrar como você pode adicionar novos campos no formulário de contato do Drupal. Existem módulos como o webform que você pode extender os diversos formulários e até criar novos formulários, porém vou mostrar como fazer isso codificando mesmo.

Neste post vou mostrar como adicionar um checkbox chamado "Desejo me inscrever na newsletter" no formulário de contato e ao marcar este campo e submeter o formulário, vamos salvar o email do usuário na newsletter.

1 passo, criamos um novo módulo qualquer, neste módulo vamos utilizar o hook form_alter para adicionar o campo usando o form_api.


function checkbox_newsletter_form_alter(&$form, $form_state, $form_id) {
global $user;

# adiciona um checkbox em formulários de contato para subscrição na newsletter.
if( $form_id == 'contact_mail_page' ){

$form['newsletter'] = array(
'#type' => 'checkbox',
'#title' => t('Gostaria de participar da newsletter deste site?'),
'#weight' => 1,
);

$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Send e-mail'),
'#weight' => 2,
);

$form['#validate'][] = 'checkbox_newsletter_checkbox_validate';

}

2 passo, após alterar o formulário vamos programar a função indicada no atributo validate do formulário para adicionar o email na newsletter após submeter o formulário.


function checkbox_newsletter_checkbox_validate($form, &$form_state) {

if( $form['#id'] == 'contact-mail-page' ){

if( $form['#post']['newsletter'] == 1 && !empty($form['#post']['mail']) && !empty($form['#post']['name']) ){
drupal_set_message("Obrigado por participar da nossa newsletter!");
simplenews_subscribe_user($form_state['values']['mail'], 1, FALSE);//newsletter ID 1
}
}

}

é isso!