[eside-ghost] Formulario de alta para content type Drupal 7

Keopx keopxx en gmail.com
Lun Feb 20 08:49:51 CET 2012


Veamos tienes varias temas:

Ejemplo menú con parametros:

function site_preferences_menu() {
  $items = array();

  $items['contenido-nuevo/%/%/%] = array(
    'title' => 'Site preferences',
    'description' => 'Site preferences change.',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('contenido-nuevo_form'),
    'access arguments' => array('tu permiso'),
    'file' => 'contenido-nuevo_form.inc', // fichero donde esta el
formulario
    'type' => MENU_NORMAL_ITEM,
  );

  return $items;
}

Los % son variables que vas a poder ejecutar. Te recomiendo seguir el
drupalway, te sera mucho más fácil. Te recomiendo la lectura del siguiente
libro:
http://www.amazon.com/Pro-Drupal-Development-Todd-Tomlinson/dp/1430228385/ref=dp_ob_title_bk

Hay ejemplos prácticos y te vendrá muy muy bien.

Si quieres css y theme puedes hacerlo así:

http://www.jaypan.com/blog/themeing-drupal-7-forms-including-css-and-js

Espero que te sirva


El 19 de febrero de 2012 22:59, Eneko chan <enekochan en gmail.com> escribió:

> Hola!
>
> Acabo de empezar con Drupal así que es posible que lo que voy a preguntar
> sea una tontería, pero es que llevo unos cuantos días que no consigo
> descubrir como sacar un formulario de alta para un content type a usuarios
> anónimos. Hasta ahora solo he sido capaz usando el típico "Add content" de
> la consola administrativa pero no es lo que busco.
>
> Estoy haciendo un módulo que mediante hook_menu coge unas URL determinadas
> (de la forma
> http://midominio.com/mipathespecial/parametro1/parametro2/parametro3) y
> en función de esta se llama a una función que busca en la base de datos los
> nodos que cumplen ciertas condiciones. Si existen se muestran al usuario
> (de momento en una lista de enlaces), y si no existe ninguno quiero mostrar
> un formulario para dar de alta un nuevo nodo de mi content type pero que
> algunos de los fields ya estén rellenados con los datos que venían en la
> URL.
>
> De momento tengo algo más o menos así (he quitado partes de código que no
> vienen a cuento para simplificar al máximo):
>
> function current_posts_menu() {
>   $items = array();
>   $texto = 'mipathespecial';
>   $items[$texto] = array(
>     'title' => 'Mis URLs',
>     'page callback' => '_current_posts_procesar_url',
>     'page arguments' => array(0), // Pasamos los argumentos desde el root
> argument
>     'access arguments' => array('access current_posts content'),
>     'type' => MENU_CALLBACK,
>   );
>
>   return $items;
> }
>
> function _current_posts_procesar_url($parametro1 = '', $parametro2 = '',
> $parametro3 = '') {
>    $query = db_select('node', 'n');
>   .....aqui se buscan los nodos....
>   $result = $query->execute();
>   $output = '';
>
>   //Array to contain items for the page to render.
>   $items = array();
>   //Iterate over the resultset and format as links.
>   foreach ($result as $row) {
>     $items[] = array(
>     'data' => l($row->title, 'node/' . $row->nid),
>     );
>   }
>
>   foreach ($result as $row) {
>     node_view(node_load($row->nid));
>   }
>
>   if (empty($items)) { //No content
>     $page_array['current_posts_arguments'] = array(
>       //Title serves as page subtitle
>       '#title' => t('No conocemos ninguno.'),
>       '#markup' => t('No posts available.') . ' Parametro1: ' .
> $parametro1 . ' Parametro2: ' . $parametro2 .' Parametro3: ' . $parametro3,
>     );
>     return $page_array;
>   }
>   else {
>     $page_array['current_posts_arguments'] = array(
>       '#title' => t('Conocemos estos:'),
>       '#items' => $items,
>       //Theme hook with suggestion.
>       '#theme' => 'item_list__current_posts',
>     );
>     return $page_array;
>   }
> }
>
> No se si el formulario lo puedo meter de alguna forma dentro de un fichero
> del theme (por ejemplo micontenttype--form.tpl.php o algo así) para poder
> luego configurarlo con CSS y todo eso, pero tampoco me queda claro como
> hacer que se cargue ese .tpl.php donde yo quiera. La verdad es que todavía
> estoy muy verde con Drupal y se nota que la curva de aprendizaje es algo
> lenta :(
>
> Si no recuerdo mal en esta lista hay más de uno que controla Drupal, a ver
> si me podéis echar una mano. Muchas gracias!
>
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en listas.deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://listas.deusto.es/mailman/private/eside-ghost/attachments/20120220/7f921be6/attachment-0001.html>


Más información sobre la lista de distribución eside-ghost