a20*_*a20 2 api redirect drupal http-status-code-301
如果登录用户尝试访问它,我想将"homebox/1"的请求重定向到"homebox/1/[uid]".我现在还不关心匿名用户.
这是我放入首页的代码 - homebox.tpl.php:
if(!is_numeric(arg(2))){
global $user;
if($user->uid){
if(count($_GET) > 1){
$get = array();
foreach($_GET as $k=>$v){
if($k != 'q')
$get[] = $k.'='.$v;
}
$get2 = '?'.implode('&',$get);
}
header("HTTP/1.1 301 Moved Permanently");
header('location:/homebox/1/'.$user->uid.$get2);
}else{
//redirect to error page
}
}
Run Code Online (Sandbox Code Playgroud)
但是,*.tpl.php文件是否在请求后期处理?在那种情况下,我做得相当低效.
我知道路径重定向模块(http://drupal.org/project/path_redirect).我不想使用它,因为我想知道是否有任何用于重定向的Drupal API和/或在处理链开始时捕获和重定向请求的方法.
谢谢Arul
您可能不得不使用hook_menu_alter(),但看起来homebox_menu()函数没有定义homebox /的条目
所以你只需编写自己的hook_menu实现,与homebox /匹配,并定义一个回调并将你的逻辑放在那里.
您可能希望使用drupal_goto()来进行重定向.
想要从模板中删除这样的逻辑做得很好.
归档时间: |
|
查看次数: |
2792 次 |
最近记录: |