Seite 1 von 1

Forum vom Beitragszähler ausnehmen

Verfasst: 11.03.2004 21:23
von PhilippK
Beschreibung: Berücksichtigt bestimmte Foren nicht bei der Zählung der Beiträge der Benutzers
phpBB Version: 2.0.x (getestet mit 2.0.6)

Mit dieser Änderung werden bestimmte Foren vom Beitragszähler der Benutzer ausgenommen, neue Beiträge in den Foren führen dann nicht mehr zu einer Erhöhung des Zählers.

In der ./includes/functions_post.php suchen

Code: Alles auswählen

	$sign = ($mode == 'delete') ? '- 1' : '+ 1';
und ersetzen durch

Code: Alles auswählen

	if ($forum_id == 5) 
	{ 
		$sign = ''; 
	} 
	else 
	{ 
		$sign = ( $mode == 'delete' ) ? '- 1' : '+ 1'; 
	}
Dabei müsst ihr die 5 durch die ID des Forums ersetzen, dass ihr ausschließen wollt.

Mehrere Foren ausschließen

Wenn ihr mehrere Foren ausschließen wollt, so müsst ihr die Zeile

Code: Alles auswählen

	if ($forum_id == 5)
modifizieren. So schließt z.B.

Code: Alles auswählen

	if ($forum_id == 5 || $forum_id == 6)
die Foren 5 und 6 aus.
Wenn ihr PHP 4 oder höher verwendet, könnt ihr das ganze auch etwas eleganter schreiben:

Code: Alles auswählen

	if (in_array($forum_id, array(5,6)))
Die Werte 5 und 6 sind hier nur beispielhaft und müssen von euch entsprechend angepasst werden, weitere Werte können in analoger Weise hinzugefügt werden.

Wer es etwas komfortabler haben will, kann einen der folgenden Mods installieren:
http://bbmod.sourceforge.net/index.php?mode=mod&id=4
http://www.phpbbsupport.co.uk/viewtopic.php?t=199

Verfasst: 23.03.2004 18:54
von Acid
Beschreibung: Bei der obigen Codeänderung werden die Forenbeiträge sowie die Userbeiträge in den angegebenen Foren nicht hochgezählt.
Wenn die Forenbeiträge weiterhin gezählt werden sollen, aber die Userbeiträge nicht, muss man anstatt der obigen Änderung folgendes machen.
phpBB-Version: 2.0.x

functions_post.php

Code: Alles auswählen

#
#-------[ FINDE ]----------------------------
#
		$sql = "UPDATE " . USERS_TABLE . "
			SET user_posts = user_posts $sign
#
#-------[ MIT FOLGENDEM ERSETZEN ]----------------------------
#
		$sign_u = ( $forum_id == '5' || $forum_id == '4' ) ? '' :  (( $mode == 'delete' ) ? '- 1' : '+ 1');
		$sql = "UPDATE " . USERS_TABLE . "
			SET user_posts = user_posts $sign_u
Keywords: forum+zähler+user+zähler+beiträge

Verfasst: 20.03.2005 15:44
von Leuchte
Um einen einzelnen Beitrag vom Beitragszähler auszunehmen geht man wie folgt vor:
includes/functions_post.php - Finde

Code: Alles auswählen

   $sign = ($mode == 'delete') ? '- 1' : '+ 1';
Ersetzen mit

Code: Alles auswählen

   if($mode == 'delete') 
   { 
      $sign = ($topic_id != x) ? '- 1' : ''; 
   } 
   else 
   { 
      $sign = ($topic_id != x) ? '+ 1' : ''; 
   }
Mehrere Beiträge ausschliessen

Um mehrere Beiträge vom Beitragszähler auszunehmen muss die Zeile

Code: Alles auswählen

($topic_id != x)
abgeändert werden

Code: Alles auswählen

($topic_id != x || $topic_id != y)
Ab PHP Version 4 ist auch das möglich

Code: Alles auswählen

(!in_array($topic_id, array(x,y)))
x und y sind jeweils die Beitrags-IDs

Verfasst: 18.09.2007 22:21
von gn#36
Wenn lediglich aus dem Beitragszähler unten in der Übersicht auf der Index-Seite bestimmte Foren ausgenommen werden sollen, so muss wie folgt vorgegangen werden:

öffne includes/functions.php

finde

Code: Alles auswählen

$sql = "SELECT SUM(forum_topics) AS topic_total, SUM(forum_posts) AS post_total
            FROM " . FORUMS_TABLE;
ersetze durch

Code: Alles auswählen

$sql = "SELECT SUM(forum_topics) AS topic_total, SUM(forum_posts) AS post_total
            FROM " . FORUMS_TABLE . "
            WHERE forum_id NOT IN (x1, x2, x3)";
x1, x2, x3 sind hierbei durch die gewünschten Foren_ids zu ersetzen.

Dank an Seimon für diese kurze Änderung.

Verfasst: 01.01.2008 19:29
von Christian_W
Hier noch eine Lösung von S2B:
post_counter_ignore.txt
Bedacht wurde dabei alles, was den Counter durcheinanderbringen könnte (Beitrag löschen, Thema löschen, Thema verschieben, Thema teilen). Das ganze betrifft nur die Beitragszähler der Benutzer.

Die zu ignorierenden Foren bzw. Themen werden in der constants.php durch die beiden Konstanten COUNT_IGNORE_FORUMS und COUNT_IGNORE_TOPICS festgelegt. Wenn z.B. das Forum mit der ID 1 und das mit der ID 4 ignoriert werden sollen, muss die Konstante so definiert sein:

Code: Alles auswählen

define('COUNT_IGNORE_FORUMS', '1,4');
Ganz entsprechend funktioniert das auch für Themen.