+0.61
Рейтинг
0.34
Сила
  • avatar kerby
  • 0
Хук должен выглядеть так:
public function TopicShow($aParams)
{
	$oTopic=$aParams['oTopic'];
	
	// Проверяем авторизован ли юзер, если нет - обновляем статистику
	$do_count_visits=(!$this->User_IsAuthorization());
	if (!$do_count_visits)
	{
		// Если авторизован, проверяем не он ли стартер топика
		$oUser=$this->User_GetUserCurrent();
		$do_count_visits=$oUser->getId()!=$oTopic->getUserId();
	}

	if ($do_count_visits)
	{
		$oTopic->setCountRead($oTopic->getCountRead()+1);
		$this->Topic_UpdateTopic($oTopic);

	}
}


Единственное, тут ни где не учитывается посещение сайта поисковыми машинами, но, в принципе, этим можно пренебречь при большом количестве посещений :)
Пишу полностью что и как.
Открываем файл /classes/hooks/HookStatisticsPerformance.class.php
После
class HookStatisticsPerformance extends Hook {
	public function RegisterHook() {
		$this->AddHook('template_body_end','Statistics',__CLASS__,-1000);


Добавляем
$this->AddHook('topic_show','TopicShow');


Далее, после
public function Statistics() {
		$oEngine=Engine::getInstance();
		
		$iTimeInit=$oEngine->GetTimeInit();
		$iTimeFull=round(microtime(true)-$iTimeInit,3);
		$this->Viewer_Assign('iTimeFullPerformance',$iTimeFull);
		
		$aStats=$oEngine->getStats();
		$aStats['cache']['time']=round($aStats['cache']['time'],5);
		$this->Viewer_Assign('aStatsPerformance',$aStats);
		
		$this->Viewer_Assign('bIsShowStatsPerformance',Router::GetIsShowStats());
		return $this->Viewer_Fetch('statistics_performance.tpl');
	}


Добавляем
public function TopicShow($aParams) {
        $oTopic=$aParams['oTopic'];
        $oTopic->setCountRead($oTopic->getCountRead()+1);
        $this->Topic_UpdateTopic($oTopic);
    }


В шаблоне добавляем в topic.tpl или в topic_list.tpl
{$oTopic->getCountRead()}