2009-08-26 81 views
2

如果登錄用戶試圖訪問它,我想將此請求重定向到「homebox/1」到「homebox/1/[uid]」。我現在不在乎匿名用戶。drupal重定向API

這是我投入頂頁面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 
} 
} 

然而,做* .tpl.php文件得到處理的請求晚了嗎?在那種情況下,我做得相當低效。

我知道路徑重定向模塊(http://drupal.org/project/path_redirect)。我不想使用它,因爲我想了解是否有任何Drupal API用於重定向和/或方法在處理鏈開始時捕獲並重定向請求。

感謝 了Arul

回答

8

您可能不得不使用hook_menu_alter()但它看起來像()函數不到風度定義homebox的條目homebox_menu/

所以,你會只寫你自己的hook_menu實現whih匹配homebox /並定義回調並將邏輯放在那裏。

您可能會想讓用戶drupal_goto()自己做重定向。

做好了尋找從模板中刪除這樣的邏輯。