sábado, 10 de abril de 2010

Drupal + modulo node_limitnumber: redirigir cuando se llega al límite

Cuando queremos limitar el número de publicaciones de un usuario (crear contenido) podemos utilizar el módulo NODE_LIMITNUMBER con el que se puede escoger el límite de creaciones de contenido para un role concreto y para un tipo de contenido concreto.

En este caso, queremos que los usuarios registrados puedan enviar un boletín de inscripción.
Para ello necesitamos que SOLO puedan editarlo UNA sóla vez.
Por lo tanto configuramos el nuevo módulo para que aquellos usuarios con el ROLE miembros sólamente puedan crear 1 contenido de tipo BOLETIN.

Para comprobar su funcionamiento, basta con crear un contenido y luego volver a acceder al path NODE/ADD/BOLETIN y nos saldrá el mensaje siguiente:



Pero para hacer el site mucho mas dinámico, sería interesante que cuando un usuario intente crear un nuevo contenido de ese tipo y le salga el mensaje de "prohibido crear", se le mostrara a continuación el boletín ya creado. De esta forma no dejaría lugar a dudas que SOLO puede crear/enviar ese boletín.

Para esto primero necesitamos el PATH del boletín que ha creado el usuario.
Podríamos copiar el path del nodo e indicarselo, pero necesitamos que la aplicación sea dinámica, por lo tanto pediremos ayuda a VIEWS y crearemos una vista de "los boletines creados por el propio usuario" y tomaremos nota del path de la vista (o view).

Luego, necesitamos acceder al código fuente de DRUPAL.

No nos asustemos! No es un método agresivo.

En el FTP: drupal->sites->all->modules->node_limitnumber
Editamos el archivo node_limitnumber.module
En la línea 156 y 157:


drupal_set_message(t("You can't create more content of type !type, sorry.", array('!type' => $nodetypename)), 'error');

drupal_goto('path_view');


Sustituimos "node/add" por "path_view".

Y listo!

Drupal: código php para Default value en los CCK field

Cuando mostramos un formulario que debe rellenar un usuario, podemos mostrar algunos campos ya rellenados con la información que disponemos.

En este caso, quiero que el campo EMAIL sea rellenado con la dirección email que está asignada a cada cuenta de usuario, de este modo, el formulario seguirá siendo identificado de forma no sólo única sino rápida.

Para hacerlo es tan sencillo como ir a la configuración del FIELD_EMAIL que hemos creado con CCK; buscamos la pestaña DEFAULT VALUE y desplegamos PHP CODE.

Copiamos el siguiente código:


global $user;

return array(

0 => array('value' => user_load($user->uid)->mail ),

);


Y el campo email del formulario se rellenará al inicio con la dirección del usuario.