hook_theme() 후에 버튼 위치가 바뀌는 문제

안녕하세요.

anonymous 유저가 폼을 쓸 때 active라는 필드를 감추고, 기본값으로 저장되게 하려고 아래 코드와 같이 hook_theme()를 구현했습니다. 그런데 제가 원하는 결과는 얻었는데, 난데없이 Save/Preview 버튼이 화면의 제일 위로 올라와버렸습니다. 모든 form elements 보다 버튼이 먼저 나와버리네요. 아무리 검색을 해도 이유를 모르겠습니다. 혹시 도움이 될만한 정보가 없을까요?


function custom_theme(&$existing, $type, $theme, $path) {
return array(
'volunteer_node_form' => array(
'arguments' => array('form' => null),
//'template' => 'node-volunteer-form',
),
);
}

function custom_volunteer_node_form($form) {
$out = '';
if (user_is_anonymous()) {
unset($form['field_active']);
}
$out .= drupal_render($form);
return $out;
}

정확한 답이 아닐

정확한 답이 아닐 지도 모릅니다만,
폼의 속성 중에 무게를 지정하는 것을 강제적으로 동원해 보시면 어떨까요?
예를 들어 저장/미리보기에 대해

$form['buttons']['#weight'] = 100;

이런 식으로요.

Form API: Weighting for "Save" and "Preview" buttons?
http://drupal.org/node/460130 에서 참고했습니다.

앗 답변 감사합니다.

앗 답변 감사합니다. 가능한 해법인 것 같습니다.

같은 질문을 stackoverflow에 올렸는데 Field Permissions module을 추천받아서 시도해봤는데 제가 원하는 결과를 얻었습니다. (http://stackoverflow.com/questions/1666664/hooktheme-affects-display-ord...)

hook_theme()로는 질문했던 문제점이 생겨서 hook_form_alter()를 써서 해결을 했었는데, 허무하게도 Field Permissions 모듈이 완벽하게 해결을 해주네요. 덕분에 여러가지 배우긴 했습니다만 하하.