После регистрации --> в профиль

Вопрос такой: можно ли, и если можно, то как, сделать так, чтобы после регистрации пользователь сразу же перенаправлялся в свой профиль? Регистрация по приглашениям, без активации, т.е. юзер зарегистрировался и вместо странички «Поздравляем, вы зарегистрированы», автоматом переходил на страницу своего профиля.

52 комментария

avatar
Кстати, оффтоп конечно, да и тему в эфир этим поднимаю, но не хочется плодить новый топик. Вопрос к знатокам шаблона: что значит

showWhiteBack=true


В профиле, например есть.
avatar
если true значит будет выводить белый sidebar (т.е. блок справа, беленький там ещё подсказки при создании топика) а если false то не выводит.
avatar
В header.tpl смотрите — это {if $showWhiteBack}white-back{/if}, а что такое white-back увы не знаю. Уже самому интересно стало.
avatar
ПРосто мне надо сделать нулевой паддинг, я везде прописал, но пока не поставил whiteback=false, паддинг слева сохранялся. Тогда то я и подумал, что зачем то он нужен.
avatar
Копать нужно отсюда начинать:

1. В файлике /classes/actions/ActionRegistration.class.php

Строчки следующего содержания:
$this->Viewer_Assign('bRefreshToHome',true);

2. В файлике /templates/skin/new/header.light.tpl

Строчка:
***

Собственно нужно, по идее, во втором пункте $DIR_WEB_ROOT подменить.
  • ALF
  • 0
avatar
ЗЫ Парсер съел, пардон

/templates/skin/new/header.light.tpl (второй пункт)

строка где есть переменная $DIR_WEB_ROOT.
avatar
Что там подменять, если $DIR_WEB_ROOT это и есть то что нам нужно.
<meta  HTTP-EQUIV="Refresh" CONTENT="3; URL={$DIR_WEB_ROOT}/">
перенаправит на главную страницу через 3 секунды.
Можно было просто заменить на CONTENT=0, но мы тогда не сможем использовать в том месте, где эта задержка 3 секунды действительно будет необходима. =/
avatar
/classes/actions/ActionRegistration.class.php
после
$this->SetTemplateAction('ok');
$this->DropInviteRegister();

добавить
func_header_location(DIR_WEB_ROOT);	
avatar
А чтоб переходил в профиль, просто писать необходимо будет добавить вместо
func_header_location(DIR_WEB_ROOT); 

это:
func_header_location(DIR_WEB_ROOT.'/settings/profile/');	
(:
avatar
Надо попробовать. Вы проверяли?
avatar
func_header_location(DIR_WEB_ROOT.'/profile/'.$oUser->getlogin());	

перенаправляет на страничку whois 8)
да, всё работает.
avatar
Тогда большое вам спасибо! Решили мой вопрос, я, честно говоря, не сильно на это надеялся )
avatar
Перенаправляет в /settings/profile/
avatar
Я заменил на

func_header_location(DIR_WEB_ROOT.'/profile/');

Как я раньше не посмотрел? :)
avatar
боже, какой же я идиот, убейте меня кто-нибудь…

Извините за бред выше
avatar
Ага перенаправляет, но как поставить задержку хотя бы 1-3 сек?
avatar
Зачем она нужна? Тем более, если скорость интернета не очень высокая, задержку вы получите, как раз такую, как вам нужно)
avatar
а подскажите, DIR_WEB_ROOT надо на что-то менять?? а то у меня ошибка вываливается если я в чистом виде этот код вставляю…
avatar
Я не понял в чём прикол, но nickostyle спрашивал как сделать чтобы после регистрации пользователь попадал сразу в свой профайл, т.е. редактировал его. Я так понял.
avatar
Не редактировал. Просто на страницу, в whois. Это логично, человеку, только что заполнившему инфу о себе, показать, что получилось. А не кидать в topic_list, мол, дальше сам разбирайся, что к чему.

Есть круг людей, для которых хабровская модель сообщества не знакома, их надо постепенно вводить в курс дела. Для таких людей я и делаю сайт.
avatar
Поддержу идею. При первом знакомстве с «хаброобразом» у многих возникает замешательство, и первая реплика обычно:«Сложно — буду разбираться». Не шучу, факт.
avatar
Еще такой вопрос.

Почему все функции, которые работает в аяксе, не изменяют свой вывод, даже если я правлю шаблон?

пример: редактирую профиль. В ссылках на добавление/удаление друзей я слова заменил иконками. В результате при добавлении друга иконка заменяется на «удалить из друзей», хотя в шаблоне (action/actionProfile/whois.tpl) такого нет. Может потому что осталось в sidebar.tpl?

Причем такое везде, с теми же комментариями, я уже поднимал топик, но решения так и не нашлось. И дело не в локале, в онлайне стоит двиг, все нормально работает, но изменения не вступают в силу там, где присутствует ajax.
avatar
видимо, вас дурачит кэш ЛС
avatar
Возможно.

Еще вопрос один, последний! :)

Как мне прописать условие в шаблоне профиля, чтобы определенная ссылка отображалась только тому, кто является хозяином профиля?
avatar
{if $oUserCurrent->getLogin() == $oUserProfile->getLogin()}
<a href="http://site.ru">Сылка видимая только владельцу</a>
{/if}
avatar
Вообще работает, но вот когда в профиль заходит неавторизованный пользователь, пишет:

Fatal error: Call to a member function getLogin() on a non-object in Z:\home\mcdev.ru\www\templates\compiled\%%36^365^365F4CCC%%whois.tpl.php on line 151


Хотя это не очень важно, т.е. неавторизованные у меня сайт смотреть не смогут.
avatar
{if $oUserCurrent}
{if $oUserCurrent->getLogin() == $oUserProfile->getLogin()}
<a href="http://site.ru">Сылка видимая только владельцу</a>
{/if}
{/if}
Больше не будет такое писать)
avatar
При первой загрузке страницы ajax не используется, и шаблон берется из sidebar.tpl, именно там вы заменили надписи иконками.

При onclick же, задействованы файлы new/js/friend.js и /include/ajax/userFriend.php
Там заменяется ваша иконка обратно на текст, а кэш не причем =)

З.Ы. При добавлении комментариев тож самое. ;)
avatar
Truth4oll, и где вы были раньше? :) Из всех комментариев в этом, да и не только в этом топике, можно оставить только ваши )
avatar
Изучал движок (:
avatar
Я тоже пытаюсь его изучить, с помощью одной только логики и догадок пытаюсь понять, что происходит в коде, но без знания php и js этого бывает мало :)
avatar
Хорошо хоть пытаетесь, надоело наблюдать сайты на ЛС у которых разный только config.php :)
avatar
obj.set('text',result.sToggleText);


Это здесь что то связанное с моей проблемой?
avatar
obj.set('text',result.sToggleText);


Вставил вместо text — image, теперь не меняется на текст, но, собственно, вообще ни на что не меняется :) Просто получаю уведомление о том, что друг добавлен/удален, а иконка не меняется.
avatar
в sidebar я не заменял, у меня эти ссылки располагаются в whois.tpl, в сайдбаре они тоже пока есть (еще не удалил), но вряд ли это — причина.
avatar
obj.set('text',result.sToggleText);
Меняем на:
obj.set('html',result.sToggleText);

в файле userFriend.php:
$sToggleText=$oEngine->Lang_Get('user_friend_del');
меняем на
$sToggleText='<img src...>'; //ваша иконка тут

И аналогично вот это:
$sToggleText=$oEngine->Lang_Get('user_friend_add');

В действии не проверял, вроде должно работать.
avatar
$sToggleText='<img src='{$DIR_STATIC_SKIN}/images/addfriend.gif'>'; //ваша иконка тут


Что то не сработало. Теперь вообще ничего не меняется, более того, никто не добавляется в друзья :)
avatar
вот так:
$sToggleText="<img src='{$DIR_STATIC_SKIN}/images/addfriend.gif'>";

avatar
Хотя не, вот так более правильно:
$sToggleText='<img src=\'{$DIR_STATIC_SKIN}/images/addfriend.gif\'>';

Перед кавычками находящимися внутри, добавляется обратный слэш
avatar
Да, я и сам мог это учесть, уже был опыт с этими слэшами.

Но, к сожалению, и сейчас не все гладко. Теперь функция работает, но иконка заменяется на «изображение», т.е. так, как будто бы ссылка на иконку в коде есть, но самой картинки на сервере нету. Хотя после f5 она появляется.
avatar
когда картинка как бы есть, посмотрите путь куда он ведет, и сравните с путем после f5, мб там какое-то несоответствие…
avatar
Точно, {$DIR_STATIC_SKIN} не заменяется на путь, что ж, можно железно прописать вручную.
avatar
$sToggleText=$sToggleText='<img src=\''.DIR_STATIC_SKIN.'/images/addfriend.gif\'>';  

вот так должно получиться
avatar
точно! получилось!!! Ну теперь у меня профиль просто бомба! ))))) Спасибо!
avatar
Прописал в js файле полный путь до картинки, не думаю, что это как то неправильно, просто после перенесения на хостинг, нужно будет переписать адрес сайта.

Все равно огромное спасибо!!!
avatar
Это в опере, в лисе вообще иконка пропадает после добавления/удаления ((((

/я вас наверное уже достал.../
avatar
да что уж) взялся помочь, надо до конца)
avatar
Причем удаление из друзей нормально осуществляется, и в сети на том же дистрибутиве никаких подобных ошибок не наблюдается.
avatar
Кстати, вопрос :) просто из интереса. На денвере появляется ошибка при добавлении в друзья (Error! Please try again later). Шаблон тут ни при чем, не работает и в другой версии, где шаблон профиля вообще не трогался. Там же такая ошибка возникает при добавлении коммента. Интересно, что она означает? Слово error не очень информативное ))
avatar
Теперь осталось модератору почистить топик от ненужных комментариев, и оставить только полезные, с вопросами и ответами на них :)))
avatar
В /classes/actions/ActionRegistration.class.php
после
$this->User_Authorization($oUser,false);
$this->SetTemplateAction('ok');
$this->DropInviteRegister();

Добавил
func_header_location(DIR_WEB_ROOT.'/settings/profile/');

Этого было достаточно.
avatar
Уважаемые господа! Данное решение не подходит для 1.0.3. Может кто-нибудь подскажет как это можно реализовать переход после активации не на главную, а в настройки профиля. Буду очень признателен так как уже давно не найду правильное решение.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.