如果用户访问:
user/register?destination=node/add/listing
然后他们点击“登录”或“请求新密码”标签,WONT将目标参数保留在地址栏中。即点击“登录”并登录后,用户实际上不会以:
结束node/add/listing
我想过编辑核心用户模块,但是甚至找不到合适的编辑位置,我知道这是一个非常糟糕的解决方案。
有谁知道我怎么能做到这一点?
答案 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