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!