otwórz /includes/functions.php
zaraz po:
Kod:
if (strpos($user_lang, '-x-') !== false)
{
$user_lang = substr($user_lang, 0, strpos($user_lang, '-x-'));
}
dodaj:
Kod:
if ($user->data['is_registered'])
{
$ex_fid_ary = array_unique(array_merge(array_keys($auth->acl_getf('!f_read', true)), array_keys($auth->acl_getf('!f_search', true))));
if ($auth->acl_get('m_approve'))
{
$m_approve_fid_ary = array(-1);
$m_approve_fid_sql = '';
}
else if ($auth->acl_getf_global('m_approve'))
{
$m_approve_fid_ary = array_diff(array_keys($auth->acl_getf('!m_approve', true)), $ex_fid_ary);
$m_approve_fid_sql = ' AND (p.post_approved = 1' . ((sizeof($m_approve_fid_ary)) ? ' OR ' . $db->sql_in_set('p.forum_id', $m_approve_fid_ary, true) : '') . ')';
}
else
{
$m_approve_fid_ary = array();
$m_approve_fid_sql = ' AND p.post_approved = 1';
}
$sql_where = 'AND t.topic_moved_id = 0
' . str_replace(array('p.', 'post_'), array('t.', 'topic_'), $m_approve_fid_sql) . '
' . ((sizeof($ex_fid_ary)) ? 'AND ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) : '');
$unread_list = array();
$unread_list = get_unread_topics($user->data['user_id'], $sql_where, 'ORDER BY t.topic_id DESC');
if (!empty($unread_list))
{
$sql = 'SELECT COUNT(distinct t.topic_id) as total
FROM ' . TOPICS_TABLE . ' t
WHERE ' . $db->sql_in_set('t.topic_id', array_keys($unread_list));
$result = $db->sql_query($sql);
$unread_posts_count = (int) $db->sql_fetchfield('total');
}
else
{
$unread_posts_count = 0;
}
$user->lang['SEARCH_UNREAD'] = $user->lang['SEARCH_UNREAD'] . ' (' . $unread_posts_count . ')';
}
Jest tu trochę zbędnego kodu, jak na same nieprzeczytane, ale to są szczegóły. Jeśli chcesz też liczbę nowych postów, to mów. Wtedy będzie to optymalnie zrobione (dojdzie jedno zapytanie).
Nie zmienia to faktu, że pokazuję liczbę tematów, w których są nieprzeczytane posty. Tak jest to właśnie u nas zrobione. Wydaje mi się, że jest to optymalne rozwiązanie. Można ewentualnie zmienić langa i napisać, że jest to liczba tematów, w których są nieprzeczytane posty. Jeśli chciałbyś w nawiasie wyświetlać liczbę nieprzeczytanych postów, to musiałbyś znacznie obciążyć swoje forum kolejnymi zapytaniami.
Autor postu otrzymał pochwałę
linkme.pl ~ Darmowe pozycjonowanie w google Twojego forum
Wymiana plusami oraz Lubię to