Forum vom Beitragszähler ausnehmen

In diesem moderierten Forum werden Code-Schnipsel, die zu klein sind, um richtige Mods zu sein, abgelegt.
Bei Fragen oder Problemen benutze bitte das Forum phpBB 2.0: Mod Support.
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.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Forum vom Beitragszähler ausnehmen

Beitrag 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
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag 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
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag 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
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9308
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag 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.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Christian_W
Ehemaliges Teammitglied
Beiträge: 5703
Registriert: 26.02.2004 00:09

Beitrag 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.
---
Antworten

Zurück zu „phpBB 2.0: Snippets“