[eside-ghost] Formulario de alta para content type Drupal 7
Sharlak
sharlak.eside.ghost en gmail.com
Lun Feb 20 16:36:43 CET 2012
¿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
> <mailto: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
>> <mailto: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 list
>>> eside-ghost en listas.deusto.es <mailto:eside-ghost en listas.deusto.es>
>>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>
>>
>> _______________________________________________
>> eside-ghost mailing list
>> eside-ghost en listas.deusto.es
>> <mailto:eside-ghost en listas.deusto.es>
>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>
>>
>>
>> _______________________________________________
>> eside-ghost mailing list
>> eside-ghost en listas.deusto.es <mailto:eside-ghost en listas.deusto.es>
>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>
>
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en listas.deusto.es <mailto:eside-ghost en listas.deusto.es>
> https://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/a3118fcf/attachment-0001.html>
Más información sobre la lista de distribución eside-ghost