Buenas drupaleros,
en la píldora drupaliana de hoy, os voy a contar cómo hacer que el típico campo de lista de texto o lista numérica sea dinámica, es decir, no tenga que estar predefinida por nosotros cuando lo creamos en la administración.
Es muy sencillo, lo primero que debemos hacer es como siempre crear el campo desde la administración y seleccionar el tipo (en nuestro caso lista de texto), y dejar los valores permitidos a vacío.
Lo siguiente será en un módulo creado para la ocasión o en módulo que ya tengamos en nuestro desarrollo, indicarle cuales son los valores permitidos. Para ello lo haremos con hook_form_alter y una función propia (en esta función podremos devolver los valores que queramos para la lista)
function vabadus_form_alter(&$form, &$form_state, $form_id) {
if ($form_id =='nuestro_tipo_contenido_node_form') {
$opciones = vabadus_get_list_options();
$form['field_lista']['und']['#options'] = $opciones;
if (!empty($form['#node']->field_lista['und'])) {
$saved = $form['#node']->field_lista['und'];
foreach($saved as $delta=>$opiones) {
$form['field_lista']['und']['#default_value'][$delta] = $opciones['value'];
}
}
}
}
function vabadus_get_list_options() {
$opciones = array(
1 => 'Opcion A',
2 => 'Opcion B',
3 => 'Opcion C',
4 => 'Opcion D',
);
return $opciones;
}
Con esto conseguiremos que nuestra lista no tenga unos valores predefinidos, sino los que queramos y modificables según nuestras necesidades.
Drupal y rock and roll