Como crear Tokens en Drupal 6
Los tokens son pequeñas cadenas de texto que cuando se ejecutan en algún proceso son sustituidas por valores. Pensemos por ejemplo en el módulo rules que queremos que el autor de un nodo reciba una copia del nodo que acaba de publicar, en este caso utilizamos un token [user-author] para indicarle a Drupal que el autor del nodo es el receptor del correo electrónico.
Pedro explicó en su día como añadir tokens en Drupal 5 (http://cambrico.net/drupal/como-anadir-nuevos-token-en-drupal) vamos a ver las opciones que existen hoy día para crear tokens en Drupal 6.
Esto son breves apuntes, no un artículo detallado, pero los apuntes y los ejemplos de los mismos son lo suficientemente explicativos como para ponerse a crear tokens.
Para Drupal 6 tenemos 2 opciones, la primera opción es crear tokens con el módulo custon tokens (http://drupal.org/project/token_custom) el cual nos pregunta los siguientes elementos:
- Token ID: es el nombre de Drupal para identificar al token
- Descripción
- Tipo: el tipo de información que mostrara: Global, Nodo, Usuario, Taxonomía, Comentario
- PHP replacement: código de php que genera el token
Un ejemplo de código php usando con el módulo custom token:
<?php
$myRole = "Editor";
$roleSQL = "SELECT * FROM {users} WHERE uid IN (SELECT uid FROM {users_roles} WHERE rid=(SELECT rid FROM {role} WHERE name='%s'))";
$roles = db_query($roleSQL, $myRole);
while($role = db_fetch_array($roles)) {
$usersinrole[] = $role['mail'];
}
if(count($usersinrole) > 0) {
print implode(",",$usersinrole);
}
?>Con esto podemos generar nuestros propios tokens, siempre y cuando tengamos el módulo custom tokens instalado.
Si no queremos instalar el módulo custom tokens, o estamos programando nuestro própio módulo podemos crear nuestros propios tokens utilizando los hooks:
hook_token_list
hook_token_values.
El hook_token_list nos permite indicar a Drupal cuales son los nuevos tokens que generamos. Un ejemplo:
<?php
function demo_token_token_list($type = 'all') {
if ($type == 'demo_token' || $type == 'all') {
$tokens['demo_token']['age-account'] = t("Age of the account (in days)");
$tokens['demo_token']['last-login'] = t("Last login of the user");
$tokens['demo_token']['role-count'] = t("Role of the user");
return $tokens;
}
}
?>(la fuente del código es: http://cambrico.net/drupal/como-anadir-nuevos-token-en-drupal)
El hook_token_values nos permite añadirle los valores a los tokens que hemos creado en el hook_token_list. Un ejemplo:
<?php
function demo_token_token_values($type = 'all', $object = NULL) {
$values = array();
if ($type == 'demo_token' && is_object($object)) {
$sql = "SELECT DATE_FORMAT(from_unixtime(login),'%Y-%m-%e') last_login ,
period_diff(DATE_FORMAT(now(),'%Y%m%e'),
DATE_FORMAT(from_unixtime(created),'%Y%m%e')) age_in_days
FROM {users} u WHERE uid = %d";
$dates = db_fetch_object(db_query($sql, $object->uid));
$sql = "SELECT count(*) FROM {users_roles} WHERE uid = %d";
$user_roles = db_result(db_query($sql, $object->uid));
$values['age-account'] = (string)$dates->age_in_days;
$values['last-login'] = (string)$dates->last_login;
$values['role-count'] = $user_roles;
}
return $values;
}
?>(la fuente del código es: http://cambrico.net/drupal/como-anadir-nuevos-token-en-drupal)
Como se puede ver, el hook_token_xxx es idéntico para d5 y d6,en d7 tokens es parte del core de Drupal, y esperemos que no cambie mucho :)
Un saludo
Oskar
. Configuración y administración del sitio
replica handbags buy
replica handbags
buy DVDs
replica watches
chanel
gucci
hermes
louis vuitton
designer handbags
vertu phones
replica phones
vertu replica
tag heuer phone
mobiado
cartier-phones
goldvish
rolex mobile
porsche phone
replica blackberry
iphone replica
designer handbags reviews
Enviar un comentario nuevo