сделал решение в виде плагина (залил сюда) шаблон я полагаю вы сможете подправить как вам нужно, выводится через хук «topic_show_end»
В конфиге указывается отображать топики только из текущего блога или из любого
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);
}
}
Единственное, тут ни где не учитывается посещение сайта поисковыми машинами, но, в принципе, этим можно пренебречь при большом количестве посещений :)
Главное — это чтобы разработчики плагинов понимали смысл того, что делают, тогда проблемы сводятся к минимуму.
Беру твой пример — добавление юзера в БД. Для этого есть стандартный метод 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(), и добавляем марку авто юзера
Что же мы получили? Мы добавили нового юзера в штатном режиме, плюс добавили парочку дополнительных полей, которые используются в сторонних плагинах. И нет конфликтов, сплошной профит. :)
В конфиге указывается отображать топики только из текущего блога или из любого
Единственное, тут ни где не учитывается посещение сайта поисковыми машинами, но, в принципе, этим можно пренебречь при большом количестве посещений :)
Ну а дальше поправить под свой шаблон и все.
Беру твой пример — добавление юзера в БД. Для этого есть стандартный метод User::Add(). Я пишу плагин PluginFirst, где наследую модуль User и там перекрываю этот метод так:
Другой разработчик пишет плагин PlginSecond, где тоже наследуется модуль User и перекрывается этот метод:
И что произойдет, когда будет вызван где-то метод $this->User_Add($oUser)?
Расписываем по пунктам:
1. Будет вызван метод PlginSecond_User::Add()
2. Из него будет вызван родительский метод PluginFirst_User::Add()
3. Из него будет вызван стандартный метод User::Add()
4. Возвращаемся в PluginFirst_User::Add(), и (если все ок) добавляем аську юзера
5. Возвращаемся в PlginSecond_User::Add(), и добавляем марку авто юзера
Что же мы получили? Мы добавили нового юзера в штатном режиме, плюс добавили парочку дополнительных полей, которые используются в сторонних плагинах. И нет конфликтов, сплошной профит. :)