2009-08-26 3 views
2

ログインしたユーザーがアクセスしようとすると、 "homebox/1"のリクエストを "homebox/1/[uid]"にリダイレクトします。私はまだこの時点で匿名ユーザーは気にしない。drupal redirecting 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()を使用するために持っていたかもしれないが、それはあなたが自分自身の hook_menuの実装を記述します

機能がhomeboxのエントリを定義するdosn't()homebox_menu /のように見えます

whih homebox /に一致し、コールバックを定義してそこにロジックを入れます。

リダイレクト自体を行うには、おそらくdrupal_goto()というユーザーが必要です。

このようなロジックをテンプレートから削除するためによく検討されています。

関連する問題