У меня была похожая проблема для решения. Мне нужно было иметь несколько форм на одной странице, поэтому мне пришлось изменить идентификаторы формы и ее элементов, чтобы избежать дублирования идентификаторов. Я сделал что-то вроде следующего:
function voci_comment_form($form, &$form_state, $cid) {
$form['#attributes']['id'] = 'voci-comment-form-' . $cid;
$form['#attributes']['class'][] = 'voci-comment-form';
$form['body'] = array(
'#title' => 'Post a comment',
'#type' => 'textarea',
'#resizable' => FALSE,
'#rows' => 1,
);
$form['comment'] = array(
'#type' => 'submit',
'#value' => 'Comment',
);
foreach ($form as $k => &$element) {
$k = str_replace('_', '-', $k);
$element['#attributes']['id'] = "edit-$k-$cid";
$element['#attributes']['class'][] = "edit-$k";
}
return $form;
}
Это в основном устанавливает уникальные идентификаторы на основе переданного $ cid. Код также добавляет классы к каждому элементу в форме, чтобы вы могли легко его стилизовать. Я уверен, что возможно более надежное решение, но это основная идея. Протестировано в Drupal 7.