Поставяме кода за нашия токен във файл mymodule.tokens.inc
/** * Implements hook_token_info(). */ function mymodule_token_info() { $info['tokens']['user']['custom-one-time-login-url'] = array( 'name' => t('Custom - One-time login URL'), 'description' => t('Custom URL for the one-time login page for the user account (path arg1 changed).'), 'restricted' => TRUE, ); return $info; } /** * Implements hook_tokens(). */ function mymodule_tokens($type, $tokens, array $data = array(), array $options = array()) { $replacements = array(); if ($type == 'user' && !empty($data['user'])) { //use this token on new regitered user mail message instead [user:one-time-login-url] $replacements['[user:custom-one-time-login-url]'] = custom_user_pass_reset_url($data['user']); } return $replacements; } function custom_user_pass_reset_url($account) { $timestamp = REQUEST_TIME; return url("user/set-passwd/$account->uid/$timestamp/" . user_pass_rehash($account->pass, $timestamp, $account->login), array('absolute' => TRUE)); }
Дотук имаме собствен token [user:custom-one-time-login-url], който е нови път за задаване на парола при първоначална регистрация, направена от потребител. Разликата с оригиналния token е, че връща различен път за задаване на парола като е заменена reset на set-passwd.
За да се случва нещо на урл-то, което даваме, трябва да го регистрираме:
/** * Implements hook_menu(). */ function mymodule_menu() { $items = array(); $items['user/set-passwd/%/%/%'] = array( 'title' => 'Set password', 'page callback' => 'drupal_get_form', 'page arguments' => array('overided_user_pass_reset', 2, 3, 4), 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); return $items; }
Category: