Заранее прошу прощения за многословие, но короче не объяснить.
Пишу свой модуль.
В модуле присутствуют:
function win_constructor_menu() {
$items['win_constructor'] = array(
...
return $items;
}
function win_constructor_page() {
$output = drupal_get_form('win_constructor_nameform');
return $output;
}
function win_constructor_nameform() {
...
return $form;
}
function win_constructor_form_alter(&$form, &$form_state, $form_id) {
...
}
function win_constructor_nameform_validate($form, $form_state) {
....
}
function theme_win_constructor_nameform($form) {
...
drupal_render($form);
return $output;
}
Чтобы проследить как это всё работает, расставил drupal_set_message по модулям.
При загрузке страницы получаем следующую последовательность:
* PAGE win_constructor_page
* CONSTRUCTOR win_constructor_nameform
* ALTER win_constructor_form_alter
* in ALTER $form_state[values][win_opens_radios] =
* in ALTER $form[win_opens][win_opens_radios] = 0
* THEME theme_win_constructor_nameform
* ALTER win_constructor_form_alter
* in ALTER $form_state[values][win_opens_radios] =
* in ALTER $form[win_opens][win_opens_radios] =
* ALTER win_constructor_form_alter
* in ALTER $form_state[values][win_opens_radios] =
* in ALTER $form[win_opens][win_opens_radios] =
Тут уже непонятно, зачем после темизации ещё два раза влезаем в ALTER.