Seite 1 von 2

Ungelesene Beiträge hervorheben

Verfasst: 02.03.2015 12:34
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?

Re: Ungelesene Beiträge hervorheben

Verfasst: 02.03.2015 18:53
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.

Re: Ungelesene Beiträge hervorheben

Verfasst: 02.03.2015 19:25
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 -->

Re: Ungelesene Beiträge hervorheben

Verfasst: 02.03.2015 20:19
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.

Re: Ungelesene Beiträge hervorheben

Verfasst: 03.03.2015 11:26
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:

Re: Ungelesene Beiträge hervorheben

Verfasst: 04.03.2015 10:05
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
// 

Re: Ungelesene Beiträge hervorheben

Verfasst: 05.03.2015 12:51
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

Re: Ungelesene Beiträge hervorheben

Verfasst: 05.03.2015 13:32
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).

Re: Ungelesene Beiträge hervorheben

Verfasst: 05.03.2015 13:59
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

Re: Ungelesene Beiträge hervorheben

Verfasst: 07.03.2015 01:42
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