[eside-ghost] Formulario de alta para content type Drupal 7
Eneko chan
enekochan en gmail.com
Lun Feb 20 17:12:32 CET 2012
A mano me refería a crear un formulario con el Form API. He mirado a ver
como sale el formulario en "/node/add/producto" y no me sirve porque no
quiero dar a los usuarios tantas opciones (como por ejemplo Publishing
Options y todo eso). De todas maneras la view creo que no me sirve así que
me toca hacer el módulo.
Gracias!
2012/2/20 Sharlak <sharlak.eside.ghost en gmail.com>
> **
> ¿Con a mano te refieres a hacer el formulario HTML o PHP?
>
> Si es así, NO, puedes usar los tipos de contenido de Drupal, en la opción
> de menú Structure > Content types > Add content type, para definir tus
> tipos de contenido (dependiendo de qué campos quieras que tenga tendrás que
> habilitar algún módulo más, como el Text, Number...). Ahí a través de una
> GUI le puedes definir los campos que quieres que tenga tu producto
> (nombre:texto 50 caracteres, no nulo; Descripción:texto 200 caracteres;
> Precio: número, 6 cifras, 2 decimales, mayor que 0). Una vez hecho esto
> verás que cuando vas a añadir un contenido ya puedes añadir contenidos del
> nuevo tipo que has creado (con el formulario de creación generado
> automágicamente).
>
> Espero haberme explicado... si te he entendido yo bien, veo claro hacerlo
> con Views:
>
> - Crear tipo de contenido producto
> - Crear vista de productos
> - Añadir filtros a la búsqueda (para que puedas buscar por parámetros)
> - En la opción de qué mostrar cuando el resultset está vacío, poner
> tu texto y un enlace a "/node/add/product" (o como le hayas llamado a tu
> tipo de contenido)
>
> Lo veo más fácil que hacer un módulo para ello... pero bueno, como tú lo
> veas más fácil.
>
> Un saludo.
>
> El 20/02/12 16:15, Eneko chan escribió:
>
> Por lo que veo tengo que montar el formulario a mano. Pensaba que en
> Drupal habría algo para poner formularios de un content type
> "automágicamente".
>
> Lo de los views lo voy a investigar pero no se si me va a servir para lo
> que necesito.
>
> Muchas gracias!
>
> 2012/2/20 Sharlak <sharlak.eside.ghost en gmail.com>
>
>> Pues una solución fácil y rápida (sin programar), es que te crees el
>> tipo de contenido, le añadas los campos que quieras y generes una vista
>> (módulo Views) a la que se le puedan pasar parámetros (sección filters).
>> Hay una opción en la que le puedes decir qué HTML quieres que saque si no
>> encuentra los resultados que buscas.... ahí le podrías poner un texto tipo:
>> "El producto no se ha encontrado, si quiere dar un nuevo producto de alta
>> pulse aquí" y le pones el enlace a añadir un contenido de tu producto. Si
>> quieres que en vez del enlace, saque el formulario directamente tendrás que
>> añadirle un poco de código PHP para que cargue tu formulario.
>>
>> Te paso un videotutorial <http://dev.nodeone.se/node/772> sobre la parte
>> de los filtros en las views... aunque si no tienes experiencia con ese
>> módulo, te recomiendo que empieces por los introductorios que encontrarás
>> en Youtube o en la propia página de NodeOne tienen muchos vídeos sobre
>> Views.
>>
>> Espero haberme explicado bien, si tienes alguna duda coméntame.
>>
>> Salu2!
>>
>>
>>
>>
>> El 20/02/12 14:47, Eneko chan escribió:
>>
>> Pues yo lo que tengo es un content type "producto" y quiero que mediante
>> la URL se busquen productos que cumplan las condiciones que a mi me
>> interesan. Por poner un ejemplo una URL sería
>> http://midominio.com/productos/ketchup/prima. Es un ejemplo tonto pero
>> es para haceros una idea. Si existe algún Ketchup Prima pues saco los datos
>> de todos los que existan, pero si no hay ninguno quiero mostrar un
>> formulario para añadir un "producto" de mi content type, como si lo
>> hicieras desde "Add content" en la consola administrativa.
>>
>> Como todavía no me entero muy bien de como va Drupal hay muchos
>> conceptos que se me escapan.
>>
>> 2012/2/20 Sharlak <sharlak.eside.ghost en gmail.com>
>>
>>> 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 listeside-ghost en listas.deusto.eshttps://listas.deusto.es/mailman/listinfo/eside-ghost
>>>
>>>
>>>
>>> _______________________________________________
>>> eside-ghost mailing list
>>> eside-ghost en listas.deusto.es
>>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>>
>>
>>
>> _______________________________________________
>> eside-ghost mailing listeside-ghost en listas.deusto.eshttps://listas.deusto.es/mailman/listinfo/eside-ghost
>>
>>
>>
>> _______________________________________________
>> eside-ghost mailing list
>> eside-ghost en listas.deusto.es
>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>
>
>
> _______________________________________________
> eside-ghost mailing listeside-ghost en listas.deusto.eshttps://listas.deusto.es/mailman/listinfo/eside-ghost
>
>
>
> _______________________________________________
> 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/1ebc7aa6/attachment-0001.html>
Más información sobre la lista de distribución eside-ghost