Назрело два вопроса по формам.
1) как сделать в форме ввод данных как в /admin/build/modules, т.е. в виде таблицы. но при этом чтобы присутствовали остальные контролы как обычно.
2) как сделать расположение описания поля слева от поля, а не сверху от поля.
Комментарии
1) любую форму(даже системную) можно темизировать через свои theme функции
сначала идет сама форма
<?php
$form = array();
// form
$form['content_ranking'] = array(
'#type' => 'fieldset',
'#title' => t('Content ranking'),
);
$form['content_ranking']['#theme'] = 'node_search_admin'; // говорим какую тему использовать
$form['content_ranking']['info'] = array(
'#value' => '<em>'. t('The following numbers control which properties the content search should favor when ordering the results. Higher numbers mean more influence, zero means the property is ignored. Changing these numbers does not require the search index to be rebuilt. Changes take effect immediately.') .'</em>'
); $ranking = array('node_rank_relevance' => t('Keyword relevance'),
'node_rank_recent' => t('Recently posted'));
if (module_exists('comment')) {
$ranking['node_rank_comments'] = t('Number of comments');
}
if (module_exists('statistics') && variable_get('statistics_count_content_views', 0)) {
$ranking['node_rank_views'] = t('Number of views');
} // Note: reversed to reflect that higher number = higher ranking.
$options = drupal_map_assoc(range(0, 10));
foreach ($ranking as $var => $title) { // $var - ключ
$form['content_ranking']['factors'][$var] = array(
'#title' => $title,
'#type' => 'select',
'#options' => $options,
'#default_value' => variable_get($var, 5),
);
}
return $form;
?>
<?php
затем надо определить <a href="http://api.drupal.org/api/function/hook_theme/6">hook_theme</a>
function node_theme() {
return array(
'node_search_admin' => array( // название нашей темы
'arguments' => array('form' => NULL),
),
);
}
?>
затем сама функция
<?php
$header = array(t('Factor'), t('Weight'));
$output .= drupal_render($form); // другие полей которые не были отрендерены до этого
function theme_node_search_admin($form) {
$output = drupal_render($form['info']); // рендер поля
foreach (element_children($form['factors']) as $key) { // ключ, который раньше был $var
$row = array();
$row[] = $form['factors'][$key]['#title']; // выводим лейбл элемента
unset($form['factors'][$key]['#title']); // удаляем его
$row[] = drupal_render($form['factors'][$key]); рендер элемента(селекта) уже без лейбла
$rows[] = $row;
}
$output .= theme('table', $header, $rows); // оборачиваем в таблицу
return $output;
}
?>
2) переопределение theme_form_element
вдогонку, гуглите на тему theming forms drupal 6
спасибо )