用户帐户页面上的Drupal目标参数不是持久的?

时间:2010-05-06 14:28:49

标签: drupal persistence query-string

如果用户访问:

user/register?destination=node/add/listing

然后他们点击“登录”或“请求新密码”标签,WONT将目标参数保留在地址栏中。即点击“登录”并登录后,用户实际上不会以:

结束
node/add/listing

我想过编辑核心用户模块,但是甚至找不到合适的编辑位置,我知道这是一个非常糟糕的解决方案。

有谁知道我怎么能做到这一点?

3 个答案:

答案 0 :(得分: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();
  }
}

答案 1 :(得分:0)

您正在谈论的链接是静态链接,就像您的导航一样。它们被缓存等等,所以你不能轻易改变它。大多数时候都会采取这种行为。您通常不希望将查询字符串转移到其他链接。

要做到这一点,我认为你最好的选择不是直接在Drupal中这样做,而是用JavaScript来做。您可以设置js变量或选中document.URL

你可能可以在Drupal中做到这一点,但鉴于具体情况,它不值得努力。

答案 2 :(得分:0)

我认为你可以通过主题化菜单链接来做到这一点。我在这里为Drupal 6编写了解决方案http://tappetyclick.com/blog/2013/04/11/maintain-destination-drupal-user-account-menu#.UWbt8hcmdIE