2010-05-06 77 views
1

如果用户访问:用户帐户页面上的Drupal目标参数不持久?

user/register?destination=node/add/listing 

然后他们点击“登录”或“忘记密码”选项卡,它不会保持在地址栏的目标参数。即点击“登录”,并登录后,用户将不会在实际上结束了:

node/add/listing 

我想编辑核心用户模块,但甚至无法找到要修改正确的地方,我知道这是一个非常糟糕的解决方案。

有谁知道我能得到这个权利?

回答

0

你所谈论的链接是静态链接就像你的导航。它们被缓存等等,所以你不能轻易改变它。这种行为大部分时间都在进行。您通常不想将querystrings转移到其他链接。

要做到这一点,我认为最好的办法是不要直接做在Drupal,而是用JavaScript做到这一点。您可以设置一个js变量或者检查document.URL

你也许可以Drupal的范围内做到这一点,但考虑到具体的情况下,它不会是值得的。

1

我碰到这个来寻找同样的问题时,(我正在试图找到一个核心问题,但未能)。无论如何,我最终落实到位的解决方案比应该的要多,但是完成这项工作。

首先,下载并安装url_alter module。然后,在自定义模块中,实现hook_url_outbound_alter()。以下是我使用的代码,但许多变体都是可能的。

/** 
* Implementation of hook_url_outbound_alter(). 
* 
* If the url_alter module is enabled, and email verification is disabled, 
* this will pass the destination parameter to the registration and login tabs. 
*/ 
function os_custom_url_outbound_alter(&$path, &$options, $original) { 
    if (user_is_anonymous() && in_array($original, array('user', 'user/register', 'user/login')) && empty($options['query']) && !variable_get('user_email_verification', TRUE)) { 
    $options['query'] = drupal_get_destination(); 
    } 
}