Tutorial: Campo “ubicación” obligatorio al registrarse en phpBB
7-X-2009
Supongo que si estás leyendo esto es porque, sea por lo que sea, quieres que los usuarios de tu foro cuando entren rellenen de forma obligatoria el campo de ubicación. Y es que a todos nos gusta saber de dónde son la gente que entra a nuestros foros phpBB, ¿a que sí? Y como verás, hay muchas páginas donde preguntan cómo hacerlo, pero en prácticamente ningún sitio acabas por saber por dónde van los tiros. Bueno, hasta ahora. has dado con el sitio idóneo.
Al tajo.
Planteamiento
Todo sería mucho más fácil si, por parte de phpBB, hubieran pensado que sería interesante que todos pudiésemos elegir qué campos iban a ir, o no, a la hora de que un nuevo usuario se registrara en nuestro foro. Los personalizados, sin problema, podemos hacer que aparezcan… pero el problema viene con los campos que vienen “de serie”. No hay forma, a través del panel de control, de hacer que éstos se muestren en la ventana de registro y que sean obligatorios (o no) a gusto del administrador. Como siempre, se puede recurrir a tocar el código fuente y, con este breve tutorial, es lo que vamos a aprender a hacer.
¿Qué necesitamos?
Para llevar a cabo la faena tenemos que disponer, o bien de un editor de textos que pueda conectarse a un servidor FTP (donde se supone que tenemos nuestro foro) para modificar archivos, o bien de un editor de textos normal y un cliente de FTP para poder bajarnos los archivos localmente (a nuestro ordenador), modificarlos, y enviárselos de nuevo a nuestro foro.
Vamos allá pues
Lo primero que necesitamos es editar nuestro archivo ucp_register.php, que lo encontraréis en vuestro directorio raíz del blog yéndoos a la carpeta includes y de ahí a la carpeta ucp. Vamos, lo que viene siendo la ruta includes/ucp/ucp_register.php. Depende de la versión de phpBB que tengamos, las búsquedas que vamos a realizar pueden estar literalmente, o similares. Si no se encuentra literalmente, se puede buscar una única línea y ver que alrededor más o menos hay lo mismo. Aunque no sea exacto cien por cien, funcionará igual. No tiene pérdida.
- Dentro del citado archivo, buscamos esta porción de código:
123$data = array(‘username’ => utf8_normalize_nfc(request_var(‘username’, ”, true)),‘new_password’ => request_var(‘new_password’, ”, true),y justo debajo añadimos esto:
1‘location’ => request_var(‘location’, ”, true), - Ahora, dentro del mismo archivo, buscamos esto:
1234‘email’ => array(array(‘string’, false, 6, 60),array(‘email’)),‘email_confirm’ => array(‘string’, false, 6, 60),
y tras eso añadimos esto:
1‘location’ => array(‘string’, false, 5, 60), - Buscamos este código:
1234$user_row = array(‘username’ => $data[‘username’],‘user_password’ => phpbb_hash($data[‘new_password’]),‘user_email’ => $data[‘email’],y posteriormente añadimos esto:
1‘user_from’ => $data[‘location’], - Por último buscamos esto:
12345$template->assign_vars(array(‘ERROR’ => (sizeof($error)) ? implode(”, $error) : ”,‘USERNAME’ => $data[‘username’],‘PASSWORD’ => $data[‘new_password’],‘PASSWORD_CONFIRM’ => $data[‘password_confirm’],
y tras ese código añadimos esto:
1‘LOCATION’ => $data[‘location’],
Ahora, para que nuestros usuarios lo rellenen cuando se registren, tenemos que ponerlo en la plantilla de registro, para ello dependiendo de la plantilla que tengamos activada el archivo estará en una carpeta u otra. La ruta directa sería así: styles/PLANTILLA/template/ucp_register.html, donde pone PLANTILLA tendremos que sustituirlo por el nombre de nuestra plantilla activa. Por ejemplo, en mi caso, uso la plantilla prosilver, así que mi ruta sería: styles/prosilver/template/ucp_register.html. Vamos allá.
- Dentro del archivo ucp_register.html buscamos esta porción de código:
12345<dl><dt><label for=“password_confirm”>{L_CONFIRM_PASSWORD}:</label></dt><dd><input type=“password” tabindex=“5” name=“password_confirm” id=“password_confirm” size=“25” value=”{PASSWORD_CONFIRM}” class=“inputbox autowidth” title=”{L_CONFIRM_PASSWORD}” /></dd></dl>y justo tras eso añadimos esto:
12345<dl><dt><label for=“location”>{L_LOCATION}:</label></dt><dd><input type=“text” tabindex=“4” name=“location” id=“location” size=“25” value=”{LOCATION}” class=“inputbox autowidth” title=”{LOCATION}” /></dd></dl>
Nota final
Y con esto está todo. Ahora supongo que los más impacientes habréis ido corriendo a probarlo, pero habréis visto que no os funciona, ¿es así? xD Bueno, pues sólo falta un pequeño detalle. En phpBB3 hay un sistema de cache que almacena todas las plantillas para que no haya que cargarlas vez tras vez ofreciendo una mayor velocidad a la hora de conectar al foro. En la pantalla GENERAL del Panel de Administración veréis que hay una opción que se llama Limpiar el cache, y justo debajo un botón que pone Ejecutar; click et voilà!
¿Una ayudita?
Todo esto que ves es totalmente gratis para ti; dedico buena parte de mi tiempo por el simple placer de ayudar a gente como tú, para hacer las cosas más fáciles a los demás. No obstante, de vez en cuando, viene muy bien una muestra de apoyo que me anime a seguir creando todo este tipo de contenido. Si te ha gustado esto, si te ha servido de ayuda, si quieres colaborar: puedes donar algo. Por pequeña cantidad que sea lo agradeceré enormemente.
También, si lo prefieres, puedes entrar en mi lista de deseos literaria en Amazon donde podrás enviarme alguno de los libros listados. Estaría encantado de hacerle un hueco en mi casa a cualquiera de todos ellos.
¿Has encontrado algún error en el texto anterior? Me ayudarías mucho si lo reportaras.
no me funciona he realizado todo tal cual al pie de la letra y no funciona
¿Recordaste refrescar el cache de phpBB?
Funciono, pero en el ucp_register.html en vez de hacer lo que indica el tutorial, haced esto:
Dentro del archivo ucp_?register.?html buscamos esta porción de código:
{L_CONFIRM_PASSWORD}:
y justo tras eso añadimos esto:
{L_LOCATION}:
Muchas gracias por tu aporte. Depende de en qué versión de phpBB se vaya a instalar puede variar algo. Un saludo.
Hola Javi,
Despues de poner mi siio en funcionamiento y usar esta información hace ya más de un año y medio me he dado cuenta que la gente pone en ubicación lo que le da “la gana” y me gustaria saber si es posible hacer un desplegable en este campo añadiendole yo las provincias y paises…y siendo como ahora lo tengo obligatorio.
¿Que tendria que modificar?
Gracias de antemano por tu buen articulo que hoy dia sigue siendo referencia (ni en foros especializados en phpbb3 esta esta info…)
Para phpbb3 en el ucp_register.html hay que buscar:
{L_CONFIRM_PASSWORD}:
Y en la siguiente línea pegar esto:
{L_LOCATION}:
Hola a tod@s. Me gustaría poner en mi foro phpbb3 como campo obligado la selección de la bandera del país del usuario cuando se registra y la verdad es que no encuentro cómo hacerlo. Estoy usando el mod national_flags_2_0_4 . Os agradecería me echarais una mano. Muchas gracias.