Помогите разобраться с делегированием (или хуками)

Сделал я плагин для своего сайта. Плагин очень специфический, и вряд ли кому пока пригодится в том виде, какой есть. Но, если есть пожелания по его доработке — пишите, если наши пожелания совпадут, то допилю и поделюсь бесплатно. Вроде как все работает как надо, но для того, чтобы добавить в информацию о пользователе информацию из плагина, мне пришлось дописывать строчки в системные модули, что совсем нехорошо.
ActionProfile.class.php
$aTeamUsers=$this->PluginTeams_Teams_GetTeamUsersByUserId($this->oUserProfile->getId(),1);	$aTeamModerators=$this->PluginTeams_Teams_GetTeamUsersByUserId($this->oUserProfile->getId(),2);
$aTeamAdministrators=$this->PluginTeams_Teams_GetTeamUsersByUserId($this->oUserProfile->getId(),4);

	$this->Viewer_Assign('aTeamUsers',$aTeamUsers);
	$this->Viewer_Assign('aTeamModerators',$aTeamModerators);
	$this->Viewer_Assign('aTeamAdministrators',$aTeamAdministrators);

и в шаблоне в whois.tpl
{if $aTeamAdministrators}
<tr>
	<td class="var">{$aLang.profile_teams_administration}:</td>
	<td>
	{foreach from=$aTeamAdministrators item=oPluginTeams_TeamsEntity_TeamUser name=team_user}
	{assign var="oTeam" value=$oPluginTeams_TeamsEntity_TeamUser->getTeam()}
	<a href="{router page='teams'}{$oTeam->getUrl()}/">{$oTeam->getTitle()|escape:'html'}</a>{if !$smarty.foreach.team_user.last}, {/if}
	{/foreach}
	</td>
</tr>
{/if}
{if $aTeamModerators}
<tr>
	<td class="var">{$aLang.profile_teams_moderation}:</td>
	<td>
	{foreach from=$aTeamModerators item=oPluginTeams_TeamsEntity_TeamUser name=team_user}
	{assign var="oTeam" value=$oPluginTeams_TeamsEntity_TeamUser->getTeam()}
	<a href="{router page='teams'}{$oTeam->getUrl()}/">{$oTeam->getTitle()|escape:'html'}</a>{if !$smarty.foreach.team_user.last}, {/if}
	{/foreach}
	</td>
</tr>
{/if}
{if $aTeamUsers}
<tr>
	<td class="var">{$aLang.profile_teams_join}:</td>
	<td>
	{foreach from=$aTeamUsers item=oPluginTeams_TeamsEntity_TeamUser name=team_user}
	{assign var="oTeam" value=$oPluginTeams_TeamsEntity_TeamUser->getTeam()}
	<a href="{router page='teams'}{$oTeam->getUrl()}/">{$oTeam->getTitle()|escape:'html'}</a>{if !$smarty.foreach.team_user.last}, {/if}
	{/foreach}
	</td>
</tr>
{/if}


Так как это только эксперимент, и в будущем мне еще много где придется чего менять, как сделать так, чтобы эти строчки можно было делегировать из плагина.
Спасибо.

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

avatar
Знаю, что ап комменты здесь не любят, но, если его не оставить, то и ответа-совета-помощи не дождусь никогда.
avatar
Хук будет выглядеть так:
class Pluginимяплагина_HookИмяхука extends Hook {   
        public function RegisterHook() {
            $this->AddHook('profile_whois_show', 'ProfileTeamShow', __CLASS__, -3);
            
        }
        
        public function ProfileTeamShow($aVars) {
		$aTeamUsers=$this->PluginTeams_Teams_GetTeamUsersByUserId($aVars["oUserProfile"]->getId(),1);
        	$aTeamModerators=$this->PluginTeams_Teams_GetTeamUsersByUserId($aVars["oUserProfile"]->getId(),2);      			 										                      		
		$aTeamAdministrators=$this->PluginTeams_Teams_GetTeamUsersByUserId($aVars["oUserProfile"]->getId(),4);

        	$this->Viewer_Assign('aTeamUsers',$aTeamUsers);
        	$this->Viewer_Assign('aTeamModerators',$aTeamModerators);
        	$this->Viewer_Assign('aTeamAdministrators',$aTeamAdministrators);
 
        } 
}

А шаблон стандартно делегируется, про это написано.
пс: больше с up'ами не шали =)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.