Última actualización el Viernes, 28 Octubre 2011 08:45
Visto: 2815
P
ufff he buscado esta solución muchísimo por internet. Hay algunos componentes como JACLPlus pro que lo hacen, pero son de pago y no me mola la idea de tener que pagar por algo que puedo hacer yo mismo, por no hablar de instalar un componente con un montón de funciones que no voy a usar salvo la de crear grupos de usuarios.
Bueno, dejémonos de rodeos y vamos al tema, que es ni más ni menos la creación de grupos de usuarios personalizados en Joomla. ¿Por qué querríamos hacer algo asi? Pues muy sencillo, para restringir la información de nuestro Joomla a determinados grupos de usuarios. Ésto es especialmente efectivo en foros como Kunena/Fireboard también.
Vamos a ello. Es fácil, sencillo y si lo hacemos todo al pie de la letra no debería surgir ningún problema.
NOTA 1: Antes de efectuar cambios en tu base de datos, haz una copia de seguridad (click aqui para tutorial) para restaurarla en caso de cagarla. No me responsabilizo de los daños que cada usuario pueda causar a su base de datos como consecuencia de seguir este tutorial.
NOTA 2: En este tutorial no voy a cubrir los problemas que pueda tener cada usuario para acceder a su base de datos. No daré asistencia en ese aspecto.
NOTA 3: La base para éste tutorial ha sido extraída de ésta página.
NOTA 4: Este tutorial ha sido realizado en un Joomla versión 1.5.22. No daré asistencia a nadie que use una versión anterior o posterior.
1. En primer lugar nos vamos a ir a la pantalla de gestión de nuestra base de datos. Cada hosting tiene su panel de control con su icono de acceso a la PHPMyAdmin así que iremos ahi para gestionar la Database. En principio el aspecto de esta pantalla debería ser el siguiente:

2. Una vez en ella, buscaremos la tabla de grupos de usuarios en la columna de la izquierda, cuyo nombre es
jos_core_acl_aro_groups. Y hacemos click.

3. A continuación veremos la estructura de la tabla, donde se distinguen claramente los grupos de usuarios por defecto que tiene joomla. No os voy a enseñar nada complejo aqui y nos vamos a limitar a lo que realmente queremos hacer: crear un grupo de usuarios personalizado. A continuación muestro claramente la estructura de la tabla.

Bien. Vamos a aclarar un punto importante aqui. En mi caso, yo quería crear un grupo de usuarios para los miembros de mi corporación/clan de EVE, para que pudieran acceder a artículos y foros de KUNENA que están restringidos para el resto de usuarios. Por eso a mi me bastaba con un grupo cuyo pariente fuese el grupo "Registered" para que sea necesario estar 'Registered' + 'Corpmember' para acceder a esos foros y artículos. Es decir, el usuario se tiene que registrar primero, y luego se le tiene que asignar el grupo 'Corpmember' para darle acceso al contenido restringido.
Observad que, como el nuevo grupo va a ser dependiente del grupo "Registered" como ya he explicado arriba, tendremos que anotar su ID, marcada con un círculo, y que en este caso es 18.
4. Explicado este rollazo, vamos a insertar el grupo en cuestión. En la parte superior veremos una opción claramente llamada "Insert" o bien "Insertar".

5. Cuando hagamos click en la opción Insertar nos encontraremos en la siguiente pantalla:

La imagen de por si es bastante explícita, pero igualmente explicaré los campos. No tocamos más que los campos parent_id, donde pondremos 18 (el pariente es el grupo 'Registered' cuyo ID es 18), 'name', donde pondremos el nombre que queramos para el grupo y 'value', donde pondremos una breve descripción del grupo. Una vez hecho esto pulsamos
Continuar.
6. Bien, ahora la pantalla de grupos debería quedar con el siguiente aspecto:

El grupo ya está creado en la base de datos. Con esto hemos terminado aqui, y sólo deberemos cerrar el panel de administración de base de datos PHPMyAdmin y olvidarnos de todo esto. Sin embargo este grupo es inusable, porque no se ha restructurado el árbol y como su valor lft y rgt es 0 (en la imagen indica 12 y 13 porque ya se ha hecho el paso que viene a continuación), no aparecerá en el panel de control de usuarios y en los componentes que usen los grupos de usuarios. A continuación vamos con el último paso en cuestión que además resuelve este problemilla.
7. Creamos un documento de texto en el escritorio con el nombre '
reconstruir' por ejemplo. Dentro de ese documento pega el código que viene a continuación y después de guardarlo cambia la extensión a PHP. Es decir, el archivo que en un principio se llamaba 'reconstruir.txt' debes renombrarlo a 'reconstruir.php'. Es importante la extensión PHP. Si no puedes ver las extensiones de archivo tendrás que configurar tu Windows para que las muestre.
<?php
mysql_connect("localhost", "USUARIO DE LA BASE DE DATOS", "PASSWORD DE LA BASE DE DATOS") or
die("Could not connect: " . mysql_error());
mysql_select_db("NOMBRE DE LA BASE DE DATOS");
rebuild_tree ( 0 , 1);
function rebuild_tree($parent_id, $left) {
$right = $left+1;
$result = mysql_query('SELECT id FROM jos_core_acl_aro_groups '.
'WHERE parent_id="'.$parent_id.'";');
while ($row = mysql_fetch_array($result)) {
$right = rebuild_tree($row['id'], $right);
}
mysql_query('UPDATE jos_core_acl_aro_groups SET lft='.$left.', rgt='.
$right.' WHERE id="'.$parent_id.'";');
return $right+1;
}
?>Como he podido resaltar en el código, tendréis que reemplazar el texto en negrita/mayúsculas por el usuario de la base de datos, el password de la base de datos y por último el nombre de la base de datos. El host suele funcionar simplemente poniendo 'localhost' pero si en el caso de tu hosting es otro, también tendréis que indicarlo.
Una vez hecho esto, guardamos los cambios y subimos el fichero al directorio raíz de Joomla en nuestro FTP. Cuando ya lo hayamos subido, visitamos el documento con cualquier navegador. En este caso, la url sería la siguiente: http://www.urldetupáginaweb.com/reconstruir.php
Si todo ha ido correcto, obtendremos una página en blanco. Parecerá que no ha sucedido nada, pero si visitamos el panel de control de usuarios de Joomla, el aspecto debería ser el siguiente:

Y voila! El grupo está creado. Este procedimiento es más sencillo de lo que parece, y con práctica podremos hacerlo en menos de 5 minutos. De hecho el script 'reconstruir.php' es el mismo siempre, por lo que podremos usarlo tantas veces como grupos queramos crear.
NOTA IMPORTANTE: No olvidéis borrar el archivo 'reconstruir.php' de vuestro FTP cuando hayáis terminado.
Cualquier duda que tengáis no dudéis en dejar comentario. No es necesario registrarse. Suerte y saludos!