Ungelesene Beiträge hervorheben

Fragen rund um die Installation, Administration und Benutzung von phpBB.
Forumsregeln
Bitte im Thementitel den Präfix deiner phpBB-Version angeben
Digidani
Mitglied
Beiträge: 90
Registriert: 07.12.2014 11:31

Ungelesene Beiträge hervorheben

Beitrag von Digidani »

Hallo allerseits!

Ich hab in meinem aktuellen 3.1.3 auch das Board3-Portal drin. Dort gibt es am rechten Rand oben die persönliche Box mit der Anzahl ungelesener Beiträge in Klammern.
Den gleichen Ausdruck nutze ich daher auch oben in der Leiste mit "Schnellzugriff" usw. Innerhalb des Portals steht dann dort auch schön "Ungelesene Beiträge (3)". Wechsel ich aber in den Forenindex so wird daraus wieder "nur" ein "Ungelesen Beiträge" - ohne die Anzahl in Klammern.

Ich hätte gerne diese Anzahl auch im Forenindex immer aktuell mit Anzahl in Klammern. Oder anderweitig kenntlich gemacht, dass noch ungelesene Beiträge vorhanden sind.
Wie kann ich dies bewerkstelligen?
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7878
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: Ungelesene Beiträge hervorheben

Beitrag von Kirk »

Hallo
Lies dir mal dieses Thema durch: Anzahl ungelesener Beiträge, ob dies bei 3.1.3 auch funktioniert kann ich dir nicht sagen.
Digidani
Mitglied
Beiträge: 90
Registriert: 07.12.2014 11:31

Re: Ungelesene Beiträge hervorheben

Beitrag von Digidani »

Wenn die Codezeilen im Beitrag komplett sind, dann könnte ich das mal versuchen. Aber wenn nicht... Die Downloads und Links auf der ersten Seite sind leider down.

IIm Moment habe ich in der navbar_header.html einen Eintrag analog dem des Portals gemacht. Dort wirds wie gesagt auch im Header angezoegt - nur im Index halt leider nicht:

Code: Alles auswählen

<!-- IF S_LOAD_UNREADS --><li class="small-icon icon-bump"><a href="{U_SEARCH_UNREAD}" role="menuitem">{L_UNREAD_POSTS}</a></li><!-- ENDIF -->
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7878
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: Ungelesene Beiträge hervorheben

Beitrag von Kirk »

Im verlinkten Beitrag sind alle Info´s die du brauchst.
Im Portal wird dir deshalb in Klammern die ungelesenen Beiträge angezeigt, weil es im Portal selbst eingebaut ist und die overall_header.html per include eingebunden ist.
Dort wiederum ist die navbar_header.html per include eingebunden.
Digidani
Mitglied
Beiträge: 90
Registriert: 07.12.2014 11:31

Re: Ungelesene Beiträge hervorheben

Beitrag von Digidani »

Okay, habe jetzt den Code von hier https://www.phpbb.com/community/viewtop ... &t=2002265 genommen (ist vielleicht sogar identisch - nur der aus Beitrag 2 für die functions.php). Scheint zu klappen. Werde es mal beobachten...

Danke jedenfalls für den Tipp! :grin:
Digidani
Mitglied
Beiträge: 90
Registriert: 07.12.2014 11:31

Re: Ungelesene Beiträge hervorheben

Beitrag von Digidani »

Zu früh gefreut. Admins und Mods können noch einloggen - beim "normalen" Nutzer kommt dann nur folgende Meldung:

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysql4 ]

Unknown column 't.topic_approved' in 'where clause' [1054]
Ich hab den Code erstmal wieder aus der functions.php rausgenommen.
Hat jemand einen Tipp, wie ich es doch wieder zum Laufen bekomme?!

Hier nochmal der Code, den ich von der erwähnten Seite eingefügt habe:

Code: Alles auswählen

//
// + new posts since last visit & you post number
//
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 = 'SELECT COUNT(distinct t.topic_id) as total
         FROM ' . TOPICS_TABLE . ' t
         WHERE t.topic_last_post_time > ' . $user->data['user_lastvisit'] . '
           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) : '');
    $result = $db->sql_query($sql);
    $new_posts_count = (int) $db->sql_fetchfield('total');

    // your post number
    $sql = "SELECT user_posts
     FROM " . USERS_TABLE . "
     WHERE user_id = " . $user->data['user_id'];
    $result = $db->sql_query($sql);
    $you_posts_count = (int) $db->sql_fetchfield('user_posts');
    
    // unread posts
    $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;
    }

   $template->assign_vars(array(
        'L_NEW_POSTS'        => $user->lang['SEARCH_NEW'] . '&nbsp;(' . $new_posts_count . ')',
        'L_UNREAD_POSTS'=>   $user->lang['SEARCH_UNREAD'] . '&nbsp;(' . $unread_posts_count . ')',
        'L_SELF_POSTS'    =>   $user->lang['SEARCH_SELF'] . '&nbsp;(' . $you_posts_count . ')',
        ));

}
//
// - new posts since last visit & you post number
// 
Benutzeravatar
Talk19zehn
Ehemaliges Teammitglied
Beiträge: 4918
Registriert: 08.06.2009 12:03
Kontaktdaten:

Re: Ungelesene Beiträge hervorheben

Beitrag von Talk19zehn »

Hello, auch meine Versuche, die Anzahl auszugeben schlugen fehl. Ansatzweise gab es in den "ersten 3.1er-Stunden" diese Extension von Pico88 -> Update to 3.1.0-alpha, die ihren Ursprung in der Modifikation "phpBB-Unread-Posts-Counter" hat:
https://github.com/Pico/phpBB-Unread-Posts-Counter
Sie ist nicht kompatibel mit der z.Z. gültigen phpBB-Version und augenscheinlich demnach leider unfertig, ist aktuell nicht anwendbar.
Die einzige Hoffnung, die ich hätte, dass sich ein Extensionschreiber ggf. den Dingen auf GitHub (vgl. Link) annimmt oder eine eigene Extension schreibt.

Ob sie, die o.g. EXT für 3.1.0-alpha, Anhaltspunkte liefern kann, ist für mich zumindest fraglich. Seit welcher Version die Datenbankabfragen, den genannten Fehler liefern, habe ich nicht herausgefunden. Schön wäre es, wenn die Anzahl (Zusatz-Info) ausgegeben werden könnte. Inwieweit jedoch Resourcen bei den rechnerischen Datenbankabfragen verbraucht werden, konnte ich obendrein nicht testen. Ein motivierter phpBBler wird sich doch finden lassen, der uns weiterhilft. Ich weiß, es ist jetzt kein Trost, doch die Hoffnung stirbt zuletzt.

Grüße
Zuletzt geändert von Talk19zehn am 05.03.2015 13:32, insgesamt 1-mal geändert.
Beste Grüße
phpBB3 Designs: Stylearea Ongray-Designs
Digidani
Mitglied
Beiträge: 90
Registriert: 07.12.2014 11:31

Re: Ungelesene Beiträge hervorheben

Beitrag von Digidani »

Danke für die Info! :)

Ist alles nicht so lebenswichtig - aber schade allemal, weil es halt nachgefragt wird und im Board3-Portal auch funktioniert (inkl. navbar_header).
Wenn das und die Sache mit den URL/IMG-Prompts (siehe https://phpbb.de/community/viewtopic.php?f=151&t=229248 oder hier https://www.phpbb.com/community/viewtop ... &t=2279046 ) wieder klappen würde, hätte ich so ziemlich meinen Stand von 3.0.12 wieder (alles was dann noch fehlt ist bereits in Arbeit oder ich brauch es eh nicht mehr).
Benutzeravatar
Talk19zehn
Ehemaliges Teammitglied
Beiträge: 4918
Registriert: 08.06.2009 12:03
Kontaktdaten:

Re: Ungelesene Beiträge hervorheben

Beitrag von Talk19zehn »

Hi, klar das Portal liefet eine Zusatz-Info, die man meiner Meinung nach durchaus im Standard aufnehmen kann und evtl. via ACP zuschalten könnte. Eine Extension würde entfallen. Das wäre doch vornehm, ein echter Service. :wink:
Von Wolfsblvt gibt es einer EXT-Alternative, die zumindest farbliche Hervorhebungen vornimmt. Ist meines Erachtens jedoch nicht grundsätzlich vergleichbar, - ist eben anders: viewtopic.php?f=149&t=233216

LG

Edit: 06.03.2015 - 14:26
Hi, wintstar hatte mich freundlicherweise darauf hingewiesen, dass die Modifikation von Miriam Show unread post count on index augenscheinlich noch immer funktionieren kann. Klar, eine Modifikation gibt es in 3.1.x nicht mehr. Man muss also händisch vorgehen und das Teilchen als Snippet verstehen. Erlaubt ist dies jedoch (wohl) nicht in der neuen 3.1.er-Welt. Verbaut haben wir das ganze dann doch testweise (ich hatte die Modifikation noch auf meiner Festplatte), sprich ich habe sie trotz Statuten wie ein Snippet behandelt. :oops: Selbstverständlich sind neue Strukturen und Vorgehensweisen in den HTML-Datein, die sich in 3.1. änderten, dabei zu beachten. Anstatt der index_body.html nutzten wir die navbar_header.html.

Zunächst hatten wir auch Änderungen vermutet, die bzgl. approved ggf. in der Grundversion ihrer Modifikation in Frage kommen könnten. Das hatte sich nicht bestätigt. Die Tests waren in meinem Falle funktionstüchtig, wenn ich nur die Grundversion verbaute. :grin:

Aber wie gesagt, ob der manuelle Einbau irgendwann versagt, da unerlaubtes Vorgehen in 3.1.x oder die Modifikation in einer EXTENSION besser grundsätzlich aufgenommen werden sollte kann ich nicht abschließend beurteilen. Das könnte Miriam oder evtl. ein Extensionenschreiber u.U. ja noch regeln. :grin: Von daher jener Tipp nur am Rande(!!!).


Leider ist momentan (heute) ihre tolle Website down / nicht erreichbar... :oops:
viewtopic.php?f=87&t=226280
Ich dachte mir, besser eine Info als gar keine Info hier zu posten. Dank auch an wintstar für den Hinweis, den wir ausgiebig gestern gemeinsam testeten!

Grüße

Edit: 07.03.2015, 08:50
Link zu ihrer Modifikation: http://mymods.lifestyle-dream.de/viewtopic.php?t=66

LG
Zuletzt geändert von Talk19zehn am 07.03.2015 08:55, insgesamt 1-mal geändert.
Beste Grüße
phpBB3 Designs: Stylearea Ongray-Designs
Gast234254
Gesperrt
Beiträge: 1999
Registriert: 08.02.2009 22:58

Re: Ungelesene Beiträge hervorheben

Beitrag von Gast234254 »

Digidani hat geschrieben:Zu früh gefreut. Admins und Mods können noch einloggen - beim "normalen" Nutzer kommt dann nur folgende Meldung:

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysql4 ]

Unknown column 't.topic_approved' in 'where clause' [1054]
Ich hab den Code erstmal wieder aus der functions.php rausgenommen.
Hat jemand einen Tipp, wie ich es doch wieder zum Laufen bekomme?!

Hier nochmal der Code, den ich von der erwähnten Seite eingefügt habe:

Code: Alles auswählen

//
// + new posts since last visit & you post number
//
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 = 'SELECT COUNT(distinct t.topic_id) as total
         FROM ' . TOPICS_TABLE . ' t
         WHERE t.topic_last_post_time > ' . $user->data['user_lastvisit'] . '
           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) : '');
    $result = $db->sql_query($sql);
    $new_posts_count = (int) $db->sql_fetchfield('total');

    // your post number
    $sql = "SELECT user_posts
     FROM " . USERS_TABLE . "
     WHERE user_id = " . $user->data['user_id'];
    $result = $db->sql_query($sql);
    $you_posts_count = (int) $db->sql_fetchfield('user_posts');
    
    // unread posts
    $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;
    }

   $template->assign_vars(array(
        'L_NEW_POSTS'        => $user->lang['SEARCH_NEW'] . '&nbsp;(' . $new_posts_count . ')',
        'L_UNREAD_POSTS'=>   $user->lang['SEARCH_UNREAD'] . '&nbsp;(' . $unread_posts_count . ')',
        'L_SELF_POSTS'    =>   $user->lang['SEARCH_SELF'] . '&nbsp;(' . $you_posts_count . ')',
        ));

}
//
// - new posts since last visit & you post number
// 
@Digidani,
ändere p.post_approved mit p.post_visibility
Antworten

Zurück zu „Support-Forum“