+0.06
Рейтинг
0.85
Сила
  • avatar KLaus
  • 3
сделал решение в виде плагина (залил сюда) шаблон я полагаю вы сможете подправить как вам нужно, выводится через хук «topic_show_end»
В конфиге указывается отображать топики только из текущего блога или из любого
  • 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);

	}
}


Единственное, тут ни где не учитывается посещение сайта поисковыми машинами, но, в принципе, этим можно пренебречь при большом количестве посещений :)
  • avatar ort
  • 0
указать в конфиге дефолтный экшен page и в экшене плагина page (ActionPage.class.php) прописать дефолтный url (там есть комментарий по этому поводу)
  • avatar nartuk
  • 1
Вставить в нужное место в templates\skin\ВАШ_ШАБЛОН\actions\ActionPeople\index.tpl
{if ($oUser->getProfileCountry()|| $oUser->getProfileRegion() || $oUser->getProfileCity())}
					<tr>
						<td class="var">{$aLang.profile_place}:</td>
						<td>
						{if $oUser->getProfileCountry()}
							<a href="{router page='people'}country/{$oUser->getProfileCountry()|escape:'html'}/">{$oUser->getProfileCountry()|escape:'html'}</a>{if $oUser->getProfileCity()},{/if}
						{/if}
						{if $oUser->getProfileCity()}
							<a href="{router page='people'}city/{$oUser->getProfileCity()|escape:'html'}/">{$oUser->getProfileCity()|escape:'html'}</a>
						{/if}
						</td>
					</tr>
					{/if}

Ну а дальше поправить под свой шаблон и все.
Главное — это чтобы разработчики плагинов понимали смысл того, что делают, тогда проблемы сводятся к минимуму.

Беру твой пример — добавление юзера в БД. Для этого есть стандартный метод User::Add(). Я пишу плагин PluginFirst, где наследую модуль User и там перекрываю этот метод так:
class PluginFirst_User extends PluginFirst_Inherits_User {
  public function Add($oUser) {
    $oUser = parent::Add($oUser);
    if ($oUser) {
      // А здесь код для добавления аськи юзера
    }
    return $oUser;
  }
}

Другой разработчик пишет плагин PlginSecond, где тоже наследуется модуль User и перекрывается этот метод:
class PlginSecond_User extends PlginSecond_Inherits_User {
  public function Add($oUser) {
    $oUser = parent::Add($oUser);
    if ($oUser) {
      // А здесь код для добавления марки авто юзера
    }
    return $oUser;
  }
}

И что произойдет, когда будет вызван где-то метод $this->User_Add($oUser)?

Расписываем по пунктам:

1. Будет вызван метод PlginSecond_User::Add()
2. Из него будет вызван родительский метод PluginFirst_User::Add()
3. Из него будет вызван стандартный метод User::Add()
4. Возвращаемся в PluginFirst_User::Add(), и (если все ок) добавляем аську юзера
5. Возвращаемся в PlginSecond_User::Add(), и добавляем марку авто юзера

Что же мы получили? Мы добавили нового юзера в штатном режиме, плюс добавили парочку дополнительных полей, которые используются в сторонних плагинах. И нет конфликтов, сплошной профит. :)