Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带令牌模块的Drupal自动应答器_Php_Drupal_Token - Fatal编程技术网

Php 带令牌模块的Drupal自动应答器

Php 带令牌模块的Drupal自动应答器,php,drupal,token,Php,Drupal,Token,我正在使用Drupal自动回复模块-我想使用令牌,这样我就可以在发送的电子邮件中包含已订阅的用户名 有人知道如何做到这一点吗 谢谢你的帮助 Shane在OP单独回答后编辑:以下假设基于$u->uid引用的是“标准”Drupal用户id,,这是不正确的因此必须通过其他方式找到相应的Drupal用户,如果可能的话-请参阅本页 我还没有测试过它,但是看看自动应答器源代码,您应该能够通过在准备纯文本正文之前插入以下代码(在6.x-1.0-alpha1版本的第392行之前),在autoresponder

我正在使用Drupal自动回复模块-我想使用令牌,这样我就可以在发送的电子邮件中包含已订阅的用户名

有人知道如何做到这一点吗

谢谢你的帮助


Shane

在OP单独回答后编辑:以下假设基于
$u->uid
引用的是“标准”Drupal用户id,,这是不正确的因此必须通过其他方式找到相应的Drupal用户,如果可能的话-请参阅本页


我还没有测试过它,但是看看自动应答器源代码,您应该能够通过在准备纯文本正文之前插入以下代码(在6.x-1.0-alpha1版本的第392行之前),在
autoresponder_mail()
函数中添加(用户)令牌替换:

或者,您可以在
autoresponder\u cron()
中的
while($message db\u fetch\u object($result\u messages))
循环中,在
if(autoresponder\u 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);
如果这样做有效,您可能希望将其作为补丁提交。(我猜你是已经回答了的‘keyzo’/‘shane’。)


如果它起作用,并且您要创建一个补丁,那么在
autoresponder\u mail\u edit\u create\u form()

自动应答器模块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);
是的,确实如此,我将把它作为我的另一个请求的补丁提交,希望它能帮助其他人

非常感谢


Shane

+1跟进-我没有查看模式,只是假设了“标准”uid用法:/On问题/备注:匿名用户也可以订阅吗?这将是单独的“autoresponder_users”表的一个很好的理由,这意味着如果找不到相应的Drupal用户,您必须在“用户邮件查找”中添加一个检查。(
user_load()
在这种情况下会返回FALSE。)嗨,Henrik,是的,感谢您的模式-您为我指明了正确的方向:-)我很重视您关于匿名用户的观点-但我早就想到了,所以这只适用于拥有帐户的用户,尽管想法不错!谢谢你的帮助。谢恩
// 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);