Здравствуйте!
Понадобилось мне изменить форму в модуле contact. Поменять порядок вывода полей и исключить поле "Тема".
Можно его не рендерить но хотябы сделать не обязательныи.
Вот что написал в template.php
<?php
function ztachel_theme() {
return array(
'contact_mail_page' => array(
'arguments' => array('form' => NULL),
),
);
}
function
contact_form_contact_mail_page_alter(&$form, &$form_state) {
//$form['subject']['#required'] = 0;
$form['subject'] = array(
'#required' => FALSE
);
//$form['subject'] = '';
}
//contact_form_contact_mail_page_alter(&$form, &$form_state);
function ztachel_contact_mail_page($form) {
$output = '';
//echo '<xmp>';
//print_r($form);
//echo '</xmp>';
$output .= drupal_render($form['cid']);
$output .= drupal_render($form['message']);
$output .= drupal_render($form['name']);
$output .= drupal_render($form['mail']);
$output .= drupal_render($form['submit']);
$output .= drupal_render($form['form_build_id']);
$output .= drupal_render($form['form_token']);
$output .= drupal_render($form['form_id']);
return
$output;
}
?>
В итоге, этот прием работает на странице, в которой я вывожу блок, в котором вызываю эту форму через php.
Но насамой странице /contact так и не отправляются сообщения. Пишет, что обязательное поле "Тема" не заполнено.
Что делать?
Комментарии
Не рендерить форму через задний проход и написать нормально модуль. Хуки в модуле надо реализовывать.
Ваш ответ мне не помог. Пожалуйста, подробнее.
Не надо пихать хуки в темплейт, надо их пихать в модуль. Сделаете хук-форм-альтер в модуле - не надо будет рендерить каждый элемент формы отдельно. А так у вас работать ничего не будет.
Как создавать модули для Drupal 6.x
О, теперь понял. Спасибо!