Доброго времени, хотелось бы добавить на форум (3.3) ещё один счётчик сообщений пользователя, в дополнение к стандартному пхпббшному.
Так, чтобы стандартный подсчитывал вообще все сообщения пользователя, а кастомный — только в определённых форумах или категории.
Готового решения я не нашла, поэтому буду благодарна, если вдруг найдётся расширение с похожим функционалом или соответствующий код.
[3.3] Счётчик сообщений в определённых форумах (в дополнение к обычному)
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение

-
- phpBB 1.2.0
- Сообщения: 16
- Стаж: 2 года 1 месяц
- Благодарил (а): 16 раз
-
- Поддержка
- Сообщения: 3336
- Стаж: 16 лет 1 месяц
- Благодарил (а): 17 раз
- Поблагодарили: 561 раз
Re: [3.3] Счётчик сообщений в определённых форумах (в дополнение к обычному)
Ignis, примерно так
PHP
В последней строчке указываем user_id (число) и forum_ids (массив)
HTML
Первое можно вставить, например, в memberlist.php после
Второе - в styles\prosilver\template\memberlist_view.html после
PHP
Код: Выделить всё
function display_user_activity_in_certain_forum($user_id = 0, $forum_ids = [])
{
global $template, $db, $user, $phpbb_root_path, $phpbb_container;
$sql = "
SELECT *
FROM " . USERS_TABLE . "
WHERE user_id = $user_id";
$result = $db->sql_query($sql);
$userdata = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if (empty($userdata))
return;
$forums = [];
$sql = '
SELECT forum_id, COUNT(post_id) AS num_posts
FROM ' . POSTS_TABLE . '
WHERE poster_id = ' . $userdata['user_id'] . '
AND post_postcount = 1
AND ' . $db->sql_in_set('forum_id', $forum_ids) . '
AND ' . $phpbb_container->get('content.visibility')->get_forums_visibility_sql('post', $forum_ids) . '
GROUP BY forum_id
ORDER BY num_posts DESC';
$result = $db->sql_query($sql);
$forums = array_column($db->sql_fetchrowset($result), null, 'forum_id');
$db->sql_freeresult($result);
if (empty($forums))
return;
$sql = '
SELECT forum_id, forum_name
FROM ' . FORUMS_TABLE . '
WHERE ' . $db->sql_in_set('forum_id', $forum_ids);
$result = $db->sql_query($sql, 3600);
while ($row = $db->sql_fetchrow($result))
$forums[$row['forum_id']]['forum_name'] = $row['forum_name'];
$db->sql_freeresult($result);
$data = [];
foreach ($forums as $id => $f) {
$percent = ($userdata['user_posts']) ? ($f['num_posts'] / $userdata['user_posts']) * 100 : 0;
$l_percent = ($userdata['user_id'] != ANONYMOUS && $userdata['user_id'] == $user->data['user_id']) ? $user->lang['POST_PCT_ACTIVE_OWN'] : $user->lang['POST_PCT_ACTIVE'];
$data[] = [
'FORUM_NAME' => $f['forum_name'],
'FORUM_URL' => append_sid("{$phpbb_root_path}viewforum.php", 'f=' . $id),
'POSTS' => $user->lang('USER_POSTS', (int) ($f['num_posts'] ?? 0)),
'PERCENT' => sprintf($l_percent, $percent),
];
}
$template->assign_var('USER_ACTIVITY_FORUMS', $data);
}
display_user_activity_in_certain_forum($user_id, /* forum_ids */ [2, 3]);
HTML
Код: Выделить всё
<dl class="details">
{% for f in USER_ACTIVITY_FORUMS %}
<dt>{{ loop.index == 1 ? 'Активность пользователя в специальных форумах:' : ' ' }}</dt>
<dd><strong><a href="{f.FORUM_URL}">{f.FORUM_NAME}</a></strong><br />({f.POSTS} / {f.PERCENT})</dd>
{% endfor %}
</dl>
Первое можно вставить, например, в memberlist.php после
display_user_activity($member);
Второе - в styles\prosilver\template\memberlist_view.html после
<h3>{L_USER_FORUM}</h3>
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- phpBB 3.0.0 RC2
- Сообщения: 1540
- Стаж: 13 лет 3 месяца
- Благодарил (а): 49 раз
- Поблагодарили: 77 раз
Re: [3.3] Счётчик сообщений в определённых форумах (в дополнение к обычному)
У меня стоит Search User Posts In Topic / Поиск сообщений пользователя в теме , жаль не выводит в скобках число этих сообщиний, как это было в моде на 3.0