[eside-ghost] Formulario de alta para content type Drupal 7
Sharlak
sharlak.eside.ghost en gmail.com
Lun Feb 20 14:27:36 CET 2012
Aupa Eneko,
¿Qué es lo que quieres hacer a nivel funcional?
Con las preguntas concretas que haces no entiendo exactamente qué
quieres hacer... si quieres seleccionar contenidos en función de unos
parámetros quizá el módulo views te sea de ayuda... si quieres hacer un
formulario el módulo adecuado es webform (o si quieres añadir contenidos
de un tipo, el propio módulo de gestión de contenidos te puede valer)...
para unir ambos quizá tengas que programar un poco...
Un saludo.
El 19/02/12 22:59, Eneko chan 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/4e1d4b6d/attachment.html>
Más información sobre la lista de distribución eside-ghost