Puede usar un código similar al siguiente, usado por el módulo Node en node_filter_form()
.
// Build the 'Update options' form.
$form['options'] = array(
'#type' => 'fieldset',
'#title' => t('Update options'),
'#attributes' => array('class' => array('container-inline')),
'#access' => $admin_access,
);
// ...
$form['options']['operation'] = array(
'#type' => 'select',
'#title' => t('Operation'),
'#title_display' => 'invisible',
'#options' => $options,
'#default_value' => 'approve',
);
La clave es la configuración de línea del atributo "# atributos" a "contenedor en línea".
Ese código es para Drupal 7; El código equivalente para Drupal 6 comienza con el siguiente código:
$form['options'] = array(
'#type' => 'fieldset',
'#title' => t('Update options'),
'#prefix' => '<div class="container-inline">',
'#suffix' => '</div>',
);
Supongamos que está utilizando Drupal 6, entonces su código debe cambiarse a algo similar al siguiente:
function contact_register_form($form, &$form_state) {
$form['description'] = array(
'#type' => 'item',
'#title' => t('Sign up to be notified when your community launches:'),
);
$form['email'] = array(
'#type' => 'textfield',
'#title' => t('Email'),
'#prefix' => '<div class="container-inline">',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Add me',
'#suffix' => '</div>',
);
return $form;
}
No puse la descripción en línea, ya que no se representaría correctamente porque está usando un campo de formulario "elemento". También encuentro que al incluir la descripción, el formulario ocuparía demasiado espacio. (Imagine lo que sucedería si la descripción en línea fuera más larga y se colocara en una sola línea).
Los estilos CSS que Drupal 7 agrega a los elementos en línea de contenedor son los siguientes.
/**
* Inline items.
*/
.container-inline div,
.container-inline label {
display: inline;
}
/* Fieldset contents always need to be rendered as block. */
.container-inline .fieldset-wrapper {
display: block;
}
Se agregan desde system.base.css .
float
CSS en lacontainer-inline
clase.