当另一个模块由于module_invoke_all而将其注销时,如何向用户显示自定义消息?
问题描述:
我有一个超时模块,可以根据用户是否处于非活动状态来记录用户。问题是模块调用module_invoke_all('user_logout',$ user);而另一个模块最终会将该用户记录下来,因为该模块实际显示正确的登出登录页面。当另一个模块由于module_invoke_all而将其注销时,如何向用户显示自定义消息?
如何让我的模块在其他注销页面上显示消息?另外drupal_set_message不会工作,因为用户将被注销,并且drupal_set_message的工作方式是您必须拥有正确的会话。
请让我知道你的想法
感谢
答
在hook_user_logout,设定无论是在你想显示
<?php
setcookie('my_message', t("Goodbye, have a nice evening!"), time() + (86400 * 30), "/");
?>
...然后在hook_init消息,显示一个cookie cookie并删除cookie
<?php
function MYMODULE_init() {
if(!empty($_COOKIE['my_message'])) {
drupal_set_message($_COOKIE['my_message']);
setcookie('my_message', '', time() - 3600);
}
}
?>
这是一个已知问题,正在讨论中http:// d rupal.org/node/754560。事实上,这里有一个稍微黑客的可能性http://drupal.org/node/754560#comment-3960328 – Grayside 2012-04-18 07:01:14