【发布时间】:2012-08-04 14:59:23
【问题描述】:
我有一个模块,我在其中定义了内容类型。假设我只有 title 和 body 字段。
当节点表单呈现时,它具有标准的title (textfield) 和body (textarea)。
我想将这两个字段包装成fieldset。
这就是我实现这一目标的方法,但我不认为这是最好的方法。
/**
* Implements hook_form().
*/
function hook_form($node, $form_state) {
return node_content_form($node, $form_state);
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function hook_form_node_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'content_type_name_node_form') {
$form['info'] = array(
'#type' => 'fieldset',
'#title' => t('Describe your content')
);
$form['info']['title'] = $form['title'];
unset($form['title']);
$form['info']['body'] = $form['body'];
unset($form['body']);
}
}
关于如何使它变得更好的任何建议?
更新
我想到的另一个变体。基本一样,只是改进了一点。
/**
* Implements hook_form_FORM_ID_alter().
*/
function hook_form_node_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'content_type_name_node_form') {
$groups = array(
'info' => array(
'title' => t('Describe your content'),
'fields' => array('title', 'body')
)
);
foreach ($groups as $key => $group) {
$form[$key] = array(
'#type' => 'fieldset',
'#title' => $group['title']
);
foreach ($group['fields'] as $field) {
$form[$key][$field] = $form[$field];
unset($form[$field]);
}
}
}
}
【问题讨论】:
标签: drupal drupal-7 drupal-theming