Счетчик посещений для раздела Мои гости

+12
1.47K
Небольшая доработка опубликованного ранее решения "Мои гости" instantcms.ru/blogs/sekretnye-materialy/moi-gosti.html, позволяет вывести в меню пользователя рядом со ссылкой на страницу "Мои гости" количество новых гостей с момента последнего просмотра списка гостей владельцем профиля.

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

1. В директ админ выполнить запрос к базе данных:



  1. ALTER TABLE `cms_users` ADD `newvisitors` INT(10) NOT NULL DEFAULT '0' AFTER `openid`;
2. В файле components/users/fronted.php

это

  1. $sql = "INSERT INTO cms_visitors (powner, visitor)
  2. VALUES ($visithost, $visitguest)";
  3. $inDB->query($sql);
заменить на это

  1. $inDB->query("INSERT INTO cms_visitors (powner, visitor) VALUES ($visithost, $visitguest)");
  2. $inDB->query("UPDATE cms_users SET newvisitors=newvisitors+1 WHERE id='{$visithost}'");

В файле gosti.php в конце после

  1. echo $visitor;
  2. }
вставить
  1.  
  2. $inDB->query("UPDATE cms_users SET newvisitors=0 WHERE id='{$visithoster}'");
Теперь, если в меню пользователя у вас есть ссылка на страницу Мои гости, вы можете добавить к ней счетчик

{user.newvisitors}
это вставляется в заголовок пункта меню.


После того как кто то просмотрит профиль пользователя, он узнает об этом по уведомлению в меню

Иллюстрация




Если нужно вывести в шаблоне template.php вне меню:

  1. $inUser->newvisitors;
Если нужно вывести в шаблоне компонента профиль пользователя:

components/users/fronted.php

перед

  1. display('com_users_profile.tpl')
;

вставить

  1. assign('newvisitors', $inUser->newvisitors)->

затем в шаблоне компонента профиль пользователя

{$newvisitors}

Дополнение

Вспомнил ещё один момент.
Я у себя не показываю визиты админа. По моему это лишнее.
Если хотите что бы пользователь не знал о том, что админ смотрел его страницу в файле gosti.php

замените это

  1. $visitguest = $inUser->id;
  2. if($inUser->id){
на это

  1. $visitguest = $inUser->id;
  2. if($inUser->id && !$inUser->is_admin){
0
KoRn KoRn 7 лет назад #
Неплохо, попробую сегодня ! Ставлю + полезная вещь.

Еще от автора

Капча на сайт или разделы сайта
Если нужно, закрыть весь сайт или некоторые его разделы каптчей.
Пинг поисковых систем для первой ветки
Небольшая интеграция инструментов для пингования, чтобы сделать его чуть удобнее
Генератор карты сайта в формате txt на лету без крона
Вообще то где то тут уже есть вполне рабочие генераторы карты для первой ветки, но этот вариант тоже имеет право быть.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.