2012-04-02 31 views
1

我有一个超时模块,可以根据用户是否处于非活动状态来记录用户。问题是模块调用module_invoke_all('user_logout',$ user);而另一个模块最终会将该用户记录下来,因为该模块实际显示正确的登出登录页面。当另一个模块由于module_invoke_all而将其注销时,如何向用户显示自定义消息?

如何让我的模块在其他注销页面上显示消息?另外drupal_set_message不会工作,因为用户将被注销,并且drupal_set_message的工作方式是您必须拥有正确的会话。

请让我知道你的想法

感谢

+0

这是一个已知问题,正在讨论中http:// d rupal.org/node/754560。事实上,这里有一个稍微黑客的可能性http://drupal.org/node/754560#comment-3960328 – Grayside 2012-04-18 07:01:14

回答

0

在hook_user_logout,设定无论是在你想显示

<?php 
setcookie('my_message', t("Goodbye, have a nice evening!"), time() + (86400 * 30), "/"); 
?> 

...然后在hook_init消息,显示一个cookie cookie并删除co​​okie

<?php 

function MYMODULE_init() { 
    if(!empty($_COOKIE['my_message'])) { 
    drupal_set_message($_COOKIE['my_message']); 
    setcookie('my_message', '', time() - 3600); 
    } 
} 
?> 
相关问题