Seite 1 von 1
Hervorhebung neuer Beiträge aufheben
Verfasst: 10.08.2006 11:08
von dieter99
Hallo,
wenn man sich in phpBB einloggt dann werden die neuen Beiträge seit dem letzten Besuch farblich (bzw. per Symbol) hervorgehoben. Wenn man einen neuen Beitrag ließt dann wird diese Hervorhebung aufgehoben. Kann mir jemand sagen welcher PHP Code für die Aufhebung verantwortlich ist. Ich hab schon viel probiert und komm keinen Schritt weiter. Vielleicht kann mir jemand helfen.
Vielen Dank!
Verfasst: 10.08.2006 18:18
von dieter99
hat denn niemand eine idee????
Verfasst: 15.08.2006 14:09
von dieter99
Bitte helft mir!
Verfasst: 16.08.2006 19:51
von dieter99
vielleicht kann zumindest jemand mal "hallo" schreiben damit ich weiss das das forum überhaupt noch lebt ....
Verfasst: 16.08.2006 22:47
von punkface
dieter99 hat geschrieben:vielleicht kann zumindest jemand mal "hallo" schreiben damit ich weiss das das forum überhaupt noch lebt ....
Aber sicher doch: hallo .. dufte, wir sind noch existent
Das Ganze funktioniert ungefähr so:
Beiträge/Themen/PNs werden durch entsprechende Icons als neu gekennzeichnet, wenn im entsprechenden Cookie nicht gespeichert wurde, dass das Thema/der Beitrag/... von dir schon gelesen wurde, und wenn das Thema/... nach deinem letzten Besuch geschrieben wurde.
Dein letzter Besuch wird in der Datenbank gespeichert, welches Thema/... von dir gelesen wurde, wird beim Aufruf des entsprechenden Themas/... im entsprechenden Cookie gespeichert. siehe dazu: KB:cookie_daten
Die Info muss dir (erstmal) reichen, denn ich hab absolut keine Lust jetzt die entsprechenden Codestellen rauszusuchen.
ps: wer im beitrag das wort entsprechend zählt, hat langeweile 
Verfasst: 20.08.2006 14:15
von dieter99
@punkface: du hast mir schon einmal einen Schritt weitergebracht. In der Datei viewforum.php habe ich den passenden Code gefunden:
Code: Alles auswählen
//
// Handle marking posts
//
if ( $mark_read == 'topics' )
{
if ( $userdata['session_logged_in'] )
{
$sql = "SELECT MAX(post_time) AS last_post
FROM " . POSTS_TABLE . "
WHERE forum_id = $forum_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql);
}
if ( $row = $db->sql_fetchrow($result) )
{
$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();
$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
if ( ( count($tracking_forums) + count($tracking_topics) ) >= 150 && empty($tracking_forums[$forum_id]) )
{
asort($tracking_forums);
unset($tracking_forums[key($tracking_forums)]);
}
if ( $row['last_post'] > $userdata['user_lastvisit'] )
{
$tracking_forums[$forum_id] = time();
setcookie($board_config['cookie_name'] . '_f', serialize($tracking_forums), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
}
}
$template->assign_vars(array(
'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">')
);
}
$message = $lang['Topics_marked_read'] . '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">', '</a> ');
message_die(GENERAL_MESSAGE, $message);
}
Ich wollte mir jetzt einmal die Inhalte des Cookies ansehen. Dazu hab ich folgenden Code geschieben:
Code: Alles auswählen
$x = unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']);
print_r($x);
Ich bekomme dann tatsächlich alle ID´s der Topics gelistet die ich bereits gelesen habe. Das Cookie "
_t" ist also dafür verantwortlich ob beim Aufruf der Seite
viewforum.php die
Topics als gelesen markiert werden oder nicht.
Doch welcher Prozess (Cookie) ist dafür verantwortlich das auf der
index Seite die
Foren/Kategorien als gelesen/ungelesen markiert werden? Eigentlich müßte es das Cookie "
_f" sein. Doch wenn ich folgenden Code anwende dann bekomme ich nie eine Ausgabe:
Code: Alles auswählen
$x = unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']);
print_r($x);
Kann mir jemand einen Denkanstoß geben????
Verfasst: 21.08.2006 16:18
von dieter99
hat jemand eine Idee?
Verfasst: 23.08.2006 10:51
von punkface
Such in der index.php nach
$tracking_topics
$tracking_forums
$new_topic_data
$unread_topics
dann findest du alle "benötigte" Stellen...