我正在使用Drupal自动回复模块 - 我想使用令牌,因此我可以包含已在发送的电子邮件中订阅的用户名...
有人知道如何实现这一目标吗?
感谢您的帮助。
沙恩
答案 0 :(得分:4)
谢谢你 - 你的回答非常接近......
自动回复模块UID与用户UID无关,因此您的代码引入了不同的用户名...所以我将其更改为从电子邮件地址中找到用户。
// load the full user object
$user = user_load(array('mail' => $u->mail));
// Replace user tokens in mail body
$mail->body = token_replace($mail->body, 'user', $user);
是的确,我会将其作为补丁提交给我的其他请求,希望它可以帮助其他人。
非常感谢
沙恩
答案 1 :(得分:3)
OP单独回答后编辑:以下是基于$u->uid
引用'标准'Drupal用户ID,这是不正确的假设! / strong>因此,如果可能的话,必须通过其他方式找到相应的Drupal用户 - 请参阅此the OPs answer for details ...
我还没有对它进行测试,但是查看自动回复源代码,您应该能够在准备纯文本正文之前插入以下代码,在autoresponder_mail()
函数中添加(用户)令牌替换(在6.x-1.0-alpha1版本中的第392行之前:
// load the full user object
$user = user_load($u->uid);
// Replace user tokens in mail body
$mail->body = token_replace($mail->body, 'user', $user);
或者,您可以在autoresponder_cron()
之前的while ($message db_fetch_object($result_messages))
循环中,在if (autoresponder_mail($u, $message))
调用之前(第366行)使用一个函数调用, $ message而不是$ mail:
// load the full user object
$user = user_load($u->uid);
// Replace user tokens in mail body
$message->body = token_replace($message->body, 'user', $user);
如果此方法有效,您可能希望将其作为补丁to the already existing feature request for this提交。 (我猜你是已经回答过的'keyzo'/'shane';)
如果它有效并且您要创建补丁,那么将可能的令牌替换提示添加到autoresponder_mail_edit_create_form()
中的消息定义表单将是“标准”做法。