2009-08-26 3 views
2

Ich möchte dies die Anfrage für "homebox/1" auf "homebox/1/[uid]" umleiten, wenn ein angemeldeter Benutzer versucht, darauf zuzugreifen. Anonyme Benutzer interessieren mich an dieser Stelle noch nicht.drupal Umleitung api

Dies ist der Code, den ich in den Top-Seite-homebox.tpl.php setzen:

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 
} 
} 

Allerdings ist die * .tpl.php Dateien werden spät in der Anfrage bearbeitet? In diesem Fall mache ich es eher ineffizient.

Ich weiß über das Pfadumleitungsmodul (http://drupal.org/project/path_redirect). Ich möchte das nicht verwenden, weil ich gerne erfahren möchte, ob es eine Drupal-API zum Umleiten gibt und/oder Methoden, um die Anfrage gleich zu Beginn der Verarbeitungskette abzufangen und umzuleiten.

Dank Arul

Antwort

8

Sie können hook_menu_alter() verwenden mussten, aber es sieht aus wie die homebox_menu() Funktion einen Eintrag für Homebox dosn't definieren/

So würden Sie nur Ihre eigenen hook_menu Implementierung schreiben whih passt Homebox/und definieren Sie einen Rückruf und legen Sie Ihre Logik dort hinein.

Sie werden wahrscheinlich Benutzer drupal_goto() verwenden, um die Umleitung selbst zu tun.

Gut gemacht, um solche Logik aus der Vorlage zu entfernen.