Как установить профиль пользователя на главной странице?

Как сделать чтобы профиль страницы пользователя установить на главной странице?
Как? установить 1!



Куда нибудь на главную в 2 или 3? чтобы это было похоже на подобие вконтакте или однок-ков...???



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

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

avatar
Просто переносом блока на главную тут не обойтись, поскольку профиль на то и профиль что в его экшене идет запрос данных о кол-ве публикаций, избранных, сообщений и т.д.

Вам с шаблоном нужно поставлять плагин расширяющий пару-тройку экшенов на которых будет выводится данные о профиле или создать хук который бы выполнялся в нужных вам местах, подцеплял данные и вставлял кусочек tpl'ки.
avatar
видимо я зря создал топик поскольку не ожидал такой системной нагрузки для меня, я не на столько силен, и богат знаниями программирования… А может быть упростить задачу и подстроить выпадающее меню в хеадере так как требует задача. взять и увеличить аватар, сделать выпадающее меню простым и все… что скажете на этот счет?
avatar
Эти данные можно тянуть прямо в классе блока.
avatar
А если опираться на код, а не фантазии?
github.com/livestreet/livestreet/blob/1.0.3/templates/skin/synio/actions/ActionProfile/sidebar.tpl
avatar
И что ты хотел сказать кинув ссылку на этоттемплейт? Думаешь я его никогда не видел? Можно же подумать прежде чем говорить.

Создаем блок, в него вставляем что-то типо того — все необходимые данные, но вместо oUserProfile — текущий пользователь, автор топика просит же, чтобы ему показывались только его данные.
$iCountTopicFavourite=$this->Topic_GetCountTopicsFavouriteByUserId($this->oUserProfile->getId());
$iCountTopicUser=$this->Topic_GetCountTopicsPersonalByUser($this->oUserProfile->getId(),1);
$iCountCommentUser=$this->Comment_GetCountCommentsByUserId($this->oUserProfile->getId(),'topic');
$iCountCommentFavourite=$this->Comment_GetCountCommentsFavouriteByUserId($this->oUserProfile->getId());
$iCountNoteUser=$this->User_GetCountUserNotesByUserId($this->oUserProfile->getId());

$this->Viewer_Assign('oUserProfile',$this->oUserProfile);
$this->Viewer_Assign('iCountTopicUser',$iCountTopicUser);
$this->Viewer_Assign('iCountCommentUser',$iCountCommentUser);
$this->Viewer_Assign('iCountTopicFavourite',$iCountTopicFavourite);
$this->Viewer_Assign('iCountCommentFavourite',$iCountCommentFavourite);
$this->Viewer_Assign('iCountNoteUser',$iCountNoteUser);
$this->Viewer_Assign('iCountWallUser',$this->Wall_GetCountWall(array('wall_user_id'=>$this->oUserProfile->getId(),'pid'=>null)));

$this->Viewer_Assign('iCountCreated',(($this->oUserCurrent and $this->oUserCurrent->getId()==$this->oUserProfile->getId()) ? $iCountNoteUser : 0) +$iCountTopicUser+$iCountCommentUser);
$this->Viewer_Assign('iCountFavourite',$iCountCommentFavourite+$iCountTopicFavourite);


Создаем темплейт для блока, который будет уж очень похож на тот, который ты кинул выше.

Все, дело сделано, и не надо никаких хуков и расширять никакие экшены, получая полукостыльное, ограниченное решение. Блок можно выводить везде, ну кроме, пожалуй, профиля, чтобы не дублировать функциональность.

Где же я, по твоему, нафантазировал?
avatar
«Прямо в классе блока» звучало так будто бы он существует и действительно учитывая расположение sidebar.tpl в профиле можно было перепутать его с блоком и о чем вы могли забыть/не догадываться.

А сделать его всегда можно, кто же сомневается.

Рад что вы помогли человеку своим ответом.
avatar
Ну да, просто немного не поняли друг друга, peace ;)
avatar
beauty_free ответил уже, я поинтересуюсь — а зачем это может быть нужно?
avatar
чтобы приблизить шаблон для лайвстрит к привычной странице социальной сети. мне кажется что когда пользователь видит свою аватарку на главной в специально отведенном месте он чувствует себя уютно. он становится частью сайта.
avatar
забыл добавить что аватар должен быть как в профиле, а снизу сообщения и все остальное
avatar
У каждого человка, конечно, свое чувство прекрасного, но мне интересно, в каких социальных сетях вы видели такую практику?
Да и у ливстрит на каждой странице есть аватар и имя пользователя.
Не понятно что не так.
avatar
вконтакте, одноклассники, мэил мой мир…
avatar
У ВК только на странице профиля ты видишь свой аватар, на любых других страницах ты видишь только лишь контент.
avatar
ну так и есть, все правильно. я хочу сделать лайвстрит похожей на соц сеть вконтакте. Я думаю это будет полезно для некоторых пользователей движка…
avatar
Стой, стой, так ты хочешь везде влепить часть профиля или наоборот убрать? У ВК нет профиля на всех страницах кроме профиля, у ливстрита профиль тоже на странице профиля.
avatar
я не знаю, если я знал бы я бы не создавал бы этот топик. у меня есть идея но не знаю как её реализовать.
avatar
Ну расскажи об идее, может сообщество тебе поможет, если кого-нибудь она зацепит.
avatar
даже если не зацепит, я буду гнуть эту линию)
avatar
напиши в личку, попробую помочь)
avatar
Думаю просто нужно выводить некоторые кнопочки из профиля и сам аватар в уменьшенном виде, скажем в правом сайдбаре… и никому он не будет мешать. Захотел к примеру отредактировать профиль или еще что, а кнопочки для этого под рукой… а хотя… лишний код… запросы…
avatar
Данные же будут из кэша браться, а если используется memcached или redis, то ощутимых изменений не будет. Не надо даже далеко идти — вк, одноклассники, примеры что бы в голове не возникало лишних иллюзий о производительности подобных решений.
avatar
эх это минута работы)
создаем фаил
\classes\hooks\HookMyprofile.class.php

вставляем код
<?php
//===============================================================
class HookMyprofile extends Hook{
//===============================================================
	public function RegisterHook(){
		$this->AddHook('init_action','InitAction',__CLASS__,1000);
	}
//===============================================================
	public function InitAction(){
		$oUserCurrent=$this->User_GetUserCurrent();
		if(Router::GetAction()=='index' && !Router::GetActionEvent() && $oUserCurrent) return Router::Action('profile',$oUserCurrent->getLogin());
	}
//===============================================================
}
?>

в шаблоне поправить ссылки в шапке на ТОПИКИ и в меню на ИНТЕРЕСНЫЕ, которые ведут на главную

Для гостя главная не изменится
avatar
ТС же нужно вывести информацию о профиле пользователя на других страницах, а не отображать профиль при переходе на action index
avatar
Это не то же самое?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.