2009-08-26 7 views
2

Je souhaite rediriger la demande de "homebox/1" vers "homebox/1/[uid]" si un utilisateur connecté essaie d'y accéder. Je ne me soucie pas des utilisateurs d'AnnyMy pour le moment.drupal rediriger l'API

Voici le code que je mets dans la partie supérieure en page 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 
} 
} 

Cependant, ce que les fichiers * .tpl.php obtenir traitées en retard dans la demande? Dans ce cas, je le fais plutôt inefficacement. J'ai connaissance du module de redirection de chemin (http://drupal.org/project/path_redirect). Je ne veux pas utiliser cela parce que je voudrais savoir s'il existe une API Drupal pour rediriger et/ou des méthodes pour attraper et rediriger la demande dès le début de la chaîne de traitement.

Merci Arul

Répondre

8

Vous avez peut-être dû utiliser hook_menu_alter() mais il semble que la fonction homebox_menu() dosn't définir une entrée pour Homebox/

Alors vous suffit d'écrire votre propre hook_menu mise en œuvre whih correspond à homebox/et définit un rappel et met votre logique dedans. Vous devrez probablement utiliser l'drupal_goto() pour effectuer la redirection elle-même.

Bien fait pour chercher à supprimer une telle logique du modèle.