当另一个模块因module_invoke_all而将其注销时,如何向用户显示自定义消息?

时间:2012-04-02 19:42:47

标签: drupal drupal-7 drupal-modules

我有一个超时模块,根据用户是否处于非活动状态来记录用户。问题是模块调用module_invoke_all('user_logout',$ user);另一个模块最终将用户注销,因为该模块实际显示正确的注销登陆页面。

如何让我的模块在另一个注销页面上显示消息?另外drupal_set_message也不起作用,因为用户将被注销,drupal_set_message的工作方式是你必须有适当的会话。

请让我知道你的想法

由于

1 个答案:

答案 0 :(得分:0)

在hook_user_logout中,设置一个包含您要显示的消息的cookie

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

...然后在hook_init中,显示cookie中的内容并删除co​​okie

<?php

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