2010-12-16 49 views
5

Tengo un tipo de contenido específico en drupal6. Quiero implementar un enlace, que oculta el campo del cuerpo de ese tipo de contenido desde el formulario de agregar, pero no desde el formulario de edición. ¿Cómo puedo hacer eso?Cómo ocultar un campo en formato drupal

Respuesta

8

Puede usar hook_form_alter. Que puede modificar mediante programación los contenidos de la compilación de la API de formulario. Esto le proporciona la matriz completa de $ de la cual puede simplemente unset($form['the_field_you_dont_want']);.

Pero la forma más fácil de deshacerse del campo del cuerpo es en el tipo de contenido de edición hay un campo etiquetado 'Etiqueta de campo del cuerpo:' simplemente deje esto en blanco y se omitirá el campo del cuerpo.

0

¿Implementaste el tipo de contenido dentro de un módulo (usando hook_node_info)? Si es así, establezca el atributo has_body en falso.

8

unset parece destruir el valor también, al igual que la propiedad #access. sólo tiene que utilizar esto para ocultar un campo (en este caso una referencia si se ha prefijado mediante la URL:. La solución de moon.watcher Aquí estoy repitiendo

$form['field_reference']['#prefix'] = "<div class='hide'>"; 
$form['field_reference']['#suffix'] = "</div>"; 
+0

Hice esto también, pero luego, si el usuario conoce CSS, puede ver los campos, y si lo hace en la página de edición de usuario, incluso puede editar los campos. Es una implementación estúpida, porque '# access' = 0 no debería destruirla. Tal vez una solicitud de función para Drupal 8? :) –

5

La solución encontrada aquí https://drupal.stackexchange.com/questions/11237/hide-field-in-node-add-page funciona muy bien para mí:

function test_remove_filed_form_alter(&$form, &$form_state) { 

    if (arg(0) == 'node' && arg(1) == 'add') { 
    $form['field_test']['#access'] = 0; 
    } 

} 

la desventaja del uso de unset() es que se eliminará por completo el campo y no se puede más adelante como, por ejemplo, en presave nodo. en mi caso, yo sólo quería eliminar el campo de la formulario en el primer momento, pero quería llenarlo más tarde, antes de guardar el nodo. La solución en el enlace de arriba funciona perfecto para mí para esto razón.

Cuestiones relacionadas