Hervorhebung neuer Beiträge aufheben

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Hervorhebung neuer Beiträge aufheben

Beitrag 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!
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Beitrag von dieter99 »

hat denn niemand eine idee????
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Beitrag von dieter99 »

Bitte helft mir!
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Beitrag von dieter99 »

vielleicht kann zumindest jemand mal "hallo" schreiben damit ich weiss das das forum überhaupt noch lebt ....
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Beitrag 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 :D

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 :o
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Beitrag 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????
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Beitrag von dieter99 »

hat jemand eine Idee?
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Beitrag von punkface »

Such in der index.php nach

$tracking_topics
$tracking_forums
$new_topic_data
$unread_topics

dann findest du alle "benötigte" Stellen...
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“