Como crear tokens en Drupal 6
Planteemos el siguiente escenario:
Queremos que los alias que cree Pathauto tengan en su url un dato que pertenece a nuestro modulo, y por tanto no esta disponible.
La solución mas elegante y limpia en este caso es la de usar tokens.
Tokens para que entendamos el concepto a mi manera?, es un modulo que además de traer sus propias definiciones que son muy útiles por cierto, nos deja crear nuestras definiciones para poder usarlas en la interfase.
Dichas definiciones sirven por ejemplo para crear url dinámicas con pathauto y los Token.
Para dar un ejemplo mas grafico imaginemos que queremos una url que este compuesta por la taxonomia bajo la cual hemos categorizado el nodo + el nombre y apellido del usuario que ha creado el nodo que hemos guardado en una tabla de nuestro propio modulo + el title del nodo.
Entonces lo que necesitamos es que cuando se cree un nodo nuestro modulo recupere el nombre y el apellido del creador y los use para incluirlos en la url del nodo por medio de un token.
Bueno ya sabemos que necesitamos. Ahora vamos a lo que vamos. Voy a definir los hook necesarios para crear el token y para asignarle la información que nos hace falta devolver.
Agregamos esto a nuestro modulo:
/**
Primero necesitamos decirle a token como se llama nuestro nuevo token tanto internamente como externamente
*/
function mimodulo_token_list($type = 'all') {
// el type sirve para especificar para que tipo de contenido va a estar disponible este token. los valores pueden ser: node, taxonomy, user, global.
if ($type == 'node') {
//$tokens['node'] es para decirle que nuestro token se tiene que mostrar bajo el listado de tokens disponibles para los nodos
$tokens['node']['nombre-apellido'] = t("Nombre y apellido del creador");
return $tokens;
}
}
/*
hook_token_values
se encarga de procesar toda la informacion que haga falta y asignar al token los resultados pertinentes.
*/
function mimodulo_token_values($type, $object = NULL, $options = array()) {
if ($type == 'node') {
//object es un objeto que contiene el tipo de contenido sobre el cual se esta por aplicar el token. en nuestro caso es un nodo, por lo cual podemos sacar de el cual es el creador por medio del uid.
//la funcion _get_datos_extra_del_usuario es un ejemplo que vendria a recuperar de nustra propia tabla el nombre y apellido del creador, consiguiendo sus datos por medio del uid
$usuario = _get_datos_extra_del_usuario($object->uid);
$nombre_apellido = $usuario->nombre . '_' . $usuario->apellido;
//la magia esta justo por aca. Aca es justamente donde definimos que valor va a tener nuestro token.
$tokens['nombre-apellido'] = $nombre_apellido;
return $tokens;
}
}
Como ven es bastante simple implementar tokens en nuestro modulo, aunque he de aclarar que hay otros hooks definidos por el modulo token que llevan las posibilidades mucho mas allá.
Ya podemos ir a pathauto admin/build/path/pathauto y ver que ente los token que hay disponibles para los nodos esta nuestro token.
Ahora solo hay que ponerlo en patrón de la creación de url del nodo que deseemos y gualá.



Amigo buen dia, y si yo quiero especificamente saber el rol del usuario logueado como quedaria la funcion? he tratado pero no consigo impolementarla.
Saluod