Académique Documents
Professionnel Documents
Culture Documents
Pasos a seguir papa personalizar un formulario en CCK 1- Haber creado un nodo mediante el Modulo de CCK, necesitamos en nombre del tipo de nodo, para eso vamos a: Menu de Navegacin: Administrador->content->content-type En la tabla donde aparecen todos los content-types, bajo el label TYPE se encuentra el nombre que vamos a utilizar en el cdigo. en este caso: "empresas"
if ((arg(0) == 'node') && (arg(1) == 'add') && (arg(2) == 'empresas')) { function phptemplate_node_form($form) { return _phptemplate_callback('empresas_form', array('user' => $user, 'form' => $form)); } }
para verificar que el cdio esta funcionando correctamente podemos poner un cdigo en la pagina llamada"empresas_form.tpl.php", por ejemplo:
Para mostrar todo el formulario en la pgina, el cdigo que se debe pegar en "empresas_form.tpl.php", debemos utilizar el siguiente cdigo:(para drupal 5)
print_r(drupal_render($form));
Pero la idea es poder mostrar los campos del formulario del modo que elijamos, para eso es necesario poder etraer los campos del formulario uno por uno. Si solo quisieramos mostrar el campo correspondiente al titulo, el cdigo a pegar en nuestra "empresas_form.tpl.php" sera:
print_r(drupal_render($form['title']))
el campo correspondiente al titulo es $form['title'], una forma para saber cual es el nombre de todos los campos que se encuentran en el formulario debe pegarse el siguiente codigo en "empresas_form.tpl.php"
print_r($form)
Mostrando Campos de Taxonoma En el caso de tener formularios con campos de taxonoma, el cdigo para mostrar dichos camos sera:
Mostrando otors tipos de Campos Normalmente para el resto de los campos el cdigo es el siguiente:
print_r(drupal_render($form['nombre_del_campo']))
print_r(drupal_render($form))
el cdigo anterior mostrar todos los campos del formulario que falten mostrar, sin repetir los ya mostrados.
6- Editando el formulario
Falta generar el codigo que nos llevara al mismo formulario personalizado cuando queramos editar el nodo. Ya que el formilario de edicin no es el mismo de agregar nodos. Para hacer esto es necesario agregar un nuevo cdigo al "tenplate.php". Para nuestro ejemplo sera. ($node->type == 'empresas')
if ((arg(0) == 'node') && (arg(2) == 'edit')){ $node = node_load(array('nid' => arg(1))); if ($node->type == 'empresas') { function phptemplate_node_form($form) { return _phptemplate_callback('empresas_form', array('user' => $user, 'form' => $form)); } } }
7- Resumen
template.php
if ((arg(0) == 'node') && (arg(1) == 'add') && (arg(2) == 'empresas')) { function phptemplate_node_form($form) { return _phptemplate_callback('empresas_form', array('user' => $user, 'form' => $form)); } } if ((arg(0) == 'node') && (arg(2) == 'edit')){ $node = node_load(array('nid' => arg(1))); if ($node->type == 'empresas') { function phptemplate_node_form($form) { return _phptemplate_callback('empresas_form', array('user' => $user, 'form' => $form)); } } }
empresas_form.tpl.php
print_r(drupal_render($form['nombre_del_campo']));//campos comunes print_r(drupal_render($form['taxonomy'][tid])) ;//si no es free taging print_r(drupal_render($form['taxonomy']['tags'][tid];//si es free taging print_r(drupal_render($form));//muestra el resto del formulario