Como redirecionar a un usuario en Drupal para que haga algo.
Lo primero darle las gracias a Daniel Primo por la sugerencia de en vez de atacar la query de la base de datos contase los resultados que me da la consulta con db_num_rows($var).
A veces necesitamos crear un tipo de módulo cárcel para que el usuario tenga que hacer algo antes de continuar, existen varias formas de hacerlo.
En este caso lo que necesitamos es que el usuario rellene el formulario del tipo de contenido bio antes de poder hacer nada.
Y si intenta irse a algún otro sitio que le devuelva constantemente al formulario.
<?php
global $user;
$sql = "select nid from node where type='bio' and uid ='%d'";
$result = db_query ($sql, $user->uid);
if (db_num_rows($result) == 0) {
header('Location: http://tudireccióndondellevar.com');
}
?> Que tiene de malo esta forma de trabajar, lo primero es que se añade una consulta más a las querys de Drupal, que ya de por sí lleva unas cuentas.
Con tiempo se podría pensar en añadir una tabla o un campo a la tabla de usuarios para indicar si se realizado la acción de rellenar el elemento, pero esto supondría ver si se carga en globar $user este valor, y cotejarlo para ver si es cierto o falso el que este rellenado el campo.
Como se puede ver, es sencillo hacer cosas tan interesantes como estas, y que consumen pocos recursos, el llevar a cabo un módulo, con todo lo que supone puede optimizar mucho el rendimiento de la aplicación, pero puede suponer también otros inconvenientes.
Por cierto, este código lo tenemos que añadir al page.tpl.php, al principio de todo.
Un saludo
Oskar
. Configuración y administración del sitio
Viendo en el API,
Viendo en el API, db_num_rows está disponible solo hasta drupal5 (http://api.drupal.org/api/function/db_num_rows/5). ¿Cuál sería la alternativa a utilizar en >drupal-5?
Saludos...
Aquí está explicado cómo
Aquí está explicado cómo debe hacerce en 6.x: http://drupal.org/node/114774#db-num-rows
Parece que una buena opción
Parece que una buena opción es usar http://api.drupal.org/api/function/db_result/6 que devuelve FALSE si el número de resultados es 0
Junto a un equipo de
Junto a un equipo de desarrollo hemos estado investigando esta herramienta. Con este post nos has respondido la última duda que se nos ha planteado. Queremos agradecerles el tiempo que han dedicado a crear este recurso, que nos ha sido de mucha ayuda.
Enviar un comentario nuevo