drupal перенаправляющий API - PullRequest
       5

drupal перенаправляющий API

2 голосов
/ 26 августа 2009

Я хочу перенаправить этот запрос для «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
}
}

Однако файлы * .tpl.php обрабатываются поздно в запросе? В этом случае я делаю это довольно неэффективно.

Я знаю о модуле перенаправления пути (http://drupal.org/project/path_redirect).. Я не хочу его использовать, потому что хотел бы узнать, есть ли какой-нибудь Drupal API для перенаправления и / или методы для перехвата и перенаправления запроса прямо в начале цепочки обработки.

Спасибо Arul

1 Ответ

8 голосов
/ 26 августа 2009

Возможно, вам пришлось использовать hook_menu_alter () , но похоже, что функция homebox_menu () не определяет запись для homebox /

Таким образом, вы просто напишите свою собственную реализацию hook_menu , которая соответствует homebox /, и определите обратный вызов и поместите туда свою логику.

Возможно, вы захотите, чтобы пользователь drupal_goto () сам сделал перенаправление.

Молодец, что пытался удалить такую ​​логику из шаблона.

...