Пытаюсь сделать редирект пользователей с проверкой.
Мне нужно, что бы когда Аномимы заходили по адресу site.ru/user их перебрасывало на site.ru/user/start
и наоборот для авторизованных, если зайдут на site.ru/user/start их отправило на site.ru/user
я в php вообще не бум-бум:) Вот что я насобирал за 2 дня поисков в интернете... не работает, я совсем уже отчаялся:(
<?php
function custom_url_rewrite_login() {
global $user;
if ($user) {
if ($path == 'user' && $user->uid==0) {
$path == 'user/start';
}
if($path == 'user/start' && $user->uid>0){
$path == 'user';
}
}
}
?>
Комментарии
Поставте модуль rules и не надо изобретать велосипед.
Не получается у меня рулесом... он вообще не реагирует... поставил условие если есть профиль и ссылка user/start, то перенаправлять на user... но как заходил на user/start так и захожу...
что за start?
просто страничка... на которой будет возможность логина, регистрации и восстановления пароля...
а вообще у меня такая ситуация... по ссылке site.ru/user у залогиненых пользователей открывается их профиль... а если пользователь не авторизован, ему выводит user_login (как я понял из перерытой инфы), все было бы отлично, если бы там еще была ссылка на регистрацию и восстановление.
темизация формы логина естественно не дала результатов...
Буду рад, если подскажете как дополнить user_login , что бы не использовать редиректы.
Все-таки я написал этот мерзопакостный хук.... выкладываю суда, может пригодится кому-нибудь
<?php
//hook_form_alter для user_login
function НАЗВАНИЕМОДУЛЯ_form_alter(&$form, $form_state, $form_id) {
//У меня еще стоит модуль email_registration, по-этому в нем нужно убрать из выборки "user_login"
if ('user_login' == $form_id){
$form['name']['#title'] = t('E-mail');
$form['name']['#description'] = t('Введите свой e-mail');
$form['pass']['#description'] = t('Введите пароль от аккаунта *******.ru');
$form['name']['#element_validate'][] = 'email_registration_user_login_validate';
//Дальнейший текст добавляет на форму 2 ссылки "Регистрация" и "Забыл пароль?"
$items = array();
if (variable_get('user_register', 1)) {
$items[] = l(t('Create new account'), 'user/register', array('attributes' => array('title' => t('Create a new user account.'))));
}
$items[] = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));
$form['links'] = array('#value' => theme('item_list', $items));
}
}
?>
а можно как то изменить хук и оставить там только добавление ссылок... без переписки полей логина и пароля7
уже сам решил. спасибо.
Это ж где вы уважаемый топик стартер нахватались примеров чтоб кирилицу в функцию t() писать???
Быстро исправляйте или на вашей совести будет убитый котенок, нет 2 котенка.
А вообще то решается и без форм
<?php
function MYMODULE_init(){
global $user;
if($user->uid > 1 && $_GET['q'] == 'user/stat') drupal_goto('user'); //не трогаем админа ;)
if($user->uid == 0 && $_GET['q'] == 'user') drupal_goto('user/stat');
}
?>
Вроде все
Идеальное решение:) спасибо вам огромное:)
Как сделать то же самое, но чтобы не менялся адрес в строке браузера?