Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Мод Who viewed a topic

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Мод Who viewed a topic

Сообщение Xpert »

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

Скачать мод Who viewed a topic
Локализация мода Who viewed a topic


Мне мод понравился, однако я внес в него некоторые доработки, связанные прежде всего с внешним видом - перемещением значка контроля просмотров.

Во viewtopic_body.tpl поместил кнопку мода справа от верхней строки навигации ( по умолчанию эта кнопка идет после кнопки IP каждого сообщения).

Код: Выделить всё

<table width="100%" cellspacing="2" cellpadding="2" border="0">
  <tr> 
	<td align="left" valign="bottom" nowrap="nowrap"><span class="nav"><a href="{U_POST_NEW_TOPIC}"><img src="{POST_IMG}" border="0" alt="{L_POST_NEW_TOPIC}" align="middle" /></a>&nbsp;&nbsp;&nbsp;<a href="{U_POST_REPLY_TOPIC}"><img src="{REPLY_IMG}" border="0" alt="{L_POST_REPLY_TOPIC}" align="middle" /></a></span></td>
	<td align="left" valign="middle" width="100%"><span class="nav">&nbsp;&nbsp;&nbsp;<a href="{U_INDEX}" class="nav">{L_INDEX}</a> 
	  -> <a href="{U_VIEW_FORUM}" class="nav">{FORUM_NAME}</a></span></td>
	<td align="right">{TOPIC_VIEW_IMG}</td>
  </tr>
</table>
Во viewtopic.php

Код: Выделить всё

		'IP_IMG' => $ip_img,

// Start add - Who viewed a topic MOD
'TOPIC_VIEW_IMG' => $topic_view_img,
// End add - Who viewed a topic MOD

		'IP' => $ip,
Отсюда фрагмент мода переместил сюда

Код: Выделить всё

	'S_WATCH_TOPIC' => $s_watching_topic,
	'S_WATCH_TOPIC_IMG' => $s_watching_topic_img,

	// Start add - Who viewed a topic MOD
	'TOPIC_VIEW_IMG' => $topic_view_img,
	// End add - Who viewed a topic MOD
А отсюда

Код: Выделить всё

	{
		$edit_img = '';
		$edit = '';
	}

// Start add - Who viewed a topic MOD
$topic_view_img = ($userdata['session_logged_in']) ? ' <a href="' . append_sid("topic_view_users.$phpEx?".POST_TOPIC_URL."=$topic_id") . '"><img src="' . $images['icon_view'] . '" alt="' . $lang['Topic_view_users'] . '" title="' . $lang['Topic_view_users'] . '" border="0" /></a>':'';
// End add - Who viewed a topic MOD


	if ( $is_auth['auth_mod'] )
... сюда

Код: Выделить всё

// Start add - Who viewed a topic MOD
$topic_view_img = ($userdata['session_logged_in']) ? ' <a href="' . append_sid("topic_view_users.$phpEx?".POST_TOPIC_URL."=$topic_id") . '"><img src="' . $images['icon_view'] . '" alt="' . $lang['Topic_view_users'] . '" title="' . $lang['Topic_view_users'] . '" border="0" /></a>':'';
// End add - Who viewed a topic MOD

//
// Send vars to template
//
$template->assign_vars(array(
Кроме того, убрал подсчет посещений темы гостями, все в том же файле заменив

Код: Выделить всё

// Start add - Who viewed a topic MOD
$user_id=$userdata['user_id'];
$sql='UPDATE '.TOPIC_VIEW_TABLE.' SET topic_id="'.$topic_id.'", view_time="'.time().'", view_count=view_count+1 WHERE topic_id='.$topic_id.' AND user_id='.$user_id;
if ( !$db->sql_query($sql) || !$db->sql_affectedrows() )
{
	$sql = 'INSERT IGNORE INTO '.TOPIC_VIEW_TABLE.' (topic_id, user_id, view_time,view_count)
		VALUES ('.$topic_id.', "'.$user_id.'", "'.time().'","1")';
	if ( !($db->sql_query($sql)) )
	{
		message_die(CRITICAL_ERROR, 'Error create user view topic information ', '', __LINE__, __FILE__, $sql);
	}
}
// End add - Who viewed a topic MOD
... на

Код: Выделить всё

// Start add - Who viewed a topic MOD
if( $userdata['session_logged_in'] )
{
	$user_id=$userdata['user_id'];
	$sql='UPDATE '.TOPIC_VIEW_TABLE.' SET topic_id="'.$topic_id.'", view_time="'.time().'", view_count=view_count+1 WHERE topic_id='.$topic_id.' AND user_id='.$user_id;
	if ( !$db->sql_query($sql) || !$db->sql_affectedrows() )
	{
		$sql = 'INSERT IGNORE INTO '.TOPIC_VIEW_TABLE.' (topic_id, user_id, view_time,view_count)
			VALUES ('.$topic_id.', "'.$user_id.'", "'.time().'","1")';
		if ( !($db->sql_query($sql)) )
		{
			message_die(CRITICAL_ERROR, 'Error create user view topic information ', '', __LINE__, __FILE__, $sql);
		}
	}
}
// End add - Who viewed a topic MOD
Надеюсь кому-нибудь будет полезно.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5283
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

Сообщение Siava »

Xpert
Спасибо за локализацию и доработки :) Сам использовал этот мод больше года, но когда пришло время заняться оптимизацией форума, то снёс его, так как лишние SQL-запросы при просмотре каждой темы были ни к чему, да и пользовался этим модом не часто. :roll:
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Nemo1987
phpBB 2.0.7
Сообщения: 560
Стаж: 18 лет 2 месяца

Сообщение Nemo1987 »

Что-то не понял смысла мода :( Как-то страннова-то написано :( Можно поподробнее что он делает? Спасибо :)
Аватара пользователя
edgar
phpBB 2.0.13
Сообщения: 917
Стаж: 18 лет 8 месяцев
Откуда: с Луны свалил...

Сообщение edgar »

Nemo1987 писал(а):Что-то не понял смысла мода
Смысл мода в том, что Xpert теперь будет знать, сколько раз Nemo1987 кликнул на тему "Мод Who viewed a topic". На редкость полезный мод.
Gisher
phpBB 2.0.12
Сообщения: 857
Стаж: 17 лет 6 месяцев
Поблагодарили: 1 раз

Сообщение Gisher »

установил мод, всё в порядке, но отображается подсчёт только с момента установки мода.
если не ошибаюсь, это связано с SQL
какой запрос нужно сделать, чтоб отображались ранние просмотры?
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 17 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

Сообщение Палыч »

Gisher писал(а):если не ошибаюсь, это связано с SQL
По-моему, ошибаетесь. Откуда, извините, взять информацию про
Gisher писал(а): ранние просмотры
, если талицу в БД для фиксации просмотров Вы создали лишь установив данный МОД?
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Gisher
phpBB 2.0.12
Сообщения: 857
Стаж: 17 лет 6 месяцев
Поблагодарили: 1 раз

Сообщение Gisher »

если талицу в БД для фиксации просмотров Вы создали лишь установив данный МОД?
ага.. я только сделал всё как было описано в моде, отправил запрос, и установил мод... только вот отсчёт просмотров идёт с момента установки.
что можно сделать, чтоб ,,добавить,, старые просмотры?
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 17 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

Сообщение Палыч »

Gisher писал(а):что можно сделать, чтоб ,,добавить,, старые просмотры?
По-моему, ничего.
Палыч писал(а): Откуда, извините, взять информацию
Ну не фиксировалась (до установки МОДа) в БД информация о том КТО, КОГДА и ЧТО просматривал.
Есть информация об общем количестве просмотров темы, но без привязки к конкретному юзеру.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Gisher
phpBB 2.0.12
Сообщения: 857
Стаж: 17 лет 6 месяцев
Поблагодарили: 1 раз

Сообщение Gisher »

вот 2 отрывка, в первом общий просмотр там цифра 1860
во второй картинке, та же тема..но если суммировать цифры, то никак не получится 1860 просмотров... то есть он начал подсчёт с момента установки мода.
добавил ещё 3 отрывок, это уже полное отображение мода в той же теме...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 17 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

Сообщение Палыч »

Gisher
Вы хотя бы читаете, то что Вам пишут (боюсь уже спросить: задумываетесь ли над прочитанным...)?
Палыч писал(а):Ну не фиксировалась (до установки МОДа) в БД информация о том КТО, КОГДА и ЧТО просматривал.
Есть информация об общем количестве просмотров темы, но без привязки к конкретному юзеру.
В вашем 1.JPG - выводиться содержимое поля topic_views из таблицы phpbb_topics
В вашем 2.JPG - выводяться содержимое поля view_count из таблицы phpbb_topic_view
Так понятнее? 8)
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Gisher
phpBB 2.0.12
Сообщения: 857
Стаж: 17 лет 6 месяцев
Поблагодарили: 1 раз

Сообщение Gisher »

Палыч писал(а):В вашем 1.JPG - выводиться содержимое поля topic_views из таблицы phpbb_topics
В вашем 2.JPG - выводяться содержимое поля view_count из таблицы phpbb_topic_view
Так понятнее? 8)
то есть это подсчёт конкретнего поста? я правильно понял?
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 17 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

Сообщение Палыч »

:shock:
Gisher писал(а):я правильно понял?
Не правильно.
Gisher
Интересно, а зачем Вы ставите МОД, если даже не понимаете КАК и главное ЧТО он делает?
Xpert писал(а):Мод добавляет возможность контроля просмотревших тему пользователей, количества просмотров каждым пользователем и времени последнего просмотра.
Перевожу:
С помощью данного МОДа Вы получаете нформацию о том, кто из ваших зарегистрированных пользователей сколько раз просмотрел ту или иную тему (если тема про порнографию с малолетками, Вы, потенциально, можете вычислить кто на Вашем форуме педофил).

Это не имеет отношения к общему количеству просмотров темы, которое подсчитывается при любом клике мышкой на тему любым пользователем (в том числе гостем).

Все. На сегодня достаточно. :evil:
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Gisher
phpBB 2.0.12
Сообщения: 857
Стаж: 17 лет 6 месяцев
Поблагодарили: 1 раз

Сообщение Gisher »

Палыч писал(а):С помощью данного МОДа Вы получаете нформацию о том, кто из ваших зарегистрированных пользователей сколько раз просмотрел ту или иную тему
не злитесь вы главное, спасибо за столь подробное объяснение) но я наверное не смог объяснить чего я хотел узнать...)
пользователи же просмотривали эти темы до мода, а отображается только колчичестао просмотров начиная с момента мода...
я всего лишь хотел узнать, как можно туда добавить ранние просмотры, которые были до установки мода)
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 17 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

Сообщение Палыч »

Gisher писал(а):я всего лишь хотел узнать, как можно туда добавить ранние просмотры, которые были до установки мода)
А я всего лишь Вам ответил,
Палыч писал(а):Ну не фиксировалась (до установки МОДа) в БД информация о том КТО, КОГДА и ЧТО просматривал.
Поэтому если и добавить, то только вручную, предварительно учинив опрос: Алё, кто сколько тем и когда просматривал?

Кстати, если для удовлетворения вашего желания Вы все-таки решитесь добавить вручную строку в базу с разницей от общего просмотра, то учтите, что это не надолго. Ибо
Палыч писал(а):Это не имеет отношения к общему количеству просмотров темы, которое подсчитывается при любом клике мышкой на тему любым пользователем (в том числе гостем).
То есть общее число просмотров будет расти от просмотров гостей, которые не фиксируются, насколько я понял, данным МОДом (он не для этого создан).

Добавлено спустя 3 минуты 18 секунд:

off: Блин, ну простая же логика: если на столбе повесить счетчик проехавших мимо машин, то он не сможет подсчитать, сколько машин проехало вчера, так как повесили его только сегодня... :wink:
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Gisher
phpBB 2.0.12
Сообщения: 857
Стаж: 17 лет 6 месяцев
Поблагодарили: 1 раз

Сообщение Gisher »

большое спасибо, извените, что отнял у вас столько внимания

Вернуться в «Поддержка модов для phpBB 2.0.x»