Seite 1 von 2

Problem #2 mit Header - diesmal mit der Statistik

Verfasst: 03.08.2008 10:55
von alexanderzwei
Hallo zusammen,

ich programmiere gerade für ein phpBB3 Board eine Userbox in dem alle Infos zum User im Header angezeigt werden. Also Username, PNs, ACP und alles andere wichtige.

Jetzt möchte ich die Statistik nach etwa folgenden Format einfügen:

Besucher online: 1
Davon 1 Registrierte, 0 Unsichtbare und 0 Gäste.


Aber auch hier tut sich das Problem auf, das auf einigen Seiten das ganze nicht angezeigt wird. Dann steht dort nur:

Besucher online:
Davon Registrierte, Unsichtbare und Gäste.

Diese Seiten wären z.B.: UCP, Wer ist online? und das Loginfeld für den ACP.
Das scheinen genau die Seiten zu sein, bei denen die functions.php nicht integriert ist. Die nötige Funktion scheint sich wohl in der functions.php zu befinden.

Ich habe es schon mit mehreren Sachen probiert zu lösen, wie etwa:

functions.php

Code: Alles auswählen

if (!function_exists('obtain_guest_count($forum_id = 0)'))
	   {
	   	  include($phpbb_root_path . 'includes/functions_display.' . $phpEx); 
	   }
	if (!function_exists('obtain_users_online($forum_id = 0)'))
	   {
	   	  include($phpbb_root_path . 'includes/functions_display.' . $phpEx); 
	   }
	if (!function_exists('obtain_users_online_string($forum_id = 0)'))
	   {
	   	  include($phpbb_root_path . 'includes/functions_display.' . $phpEx); 
	   }
Oder in der ucp.php bzw. in den anderen Dateien

Code: Alles auswählen

include($phpbb_root_path . 'includes/functions_display.' . $phpEx); 
Allerdings kommt, wenn ich versuche, die functions_display zu includen,
immer ein Fehler.
Fatal error: Cannot redeclare display_forums() (previously declared in /var/www/web75/html/includes/functions_display.php:22) in /var/www/web75/html/includes/functions_display.php on line 459

Vielleicht hat ja jemand von euch eine Idee und kennst sich mit der Forensoftware phpBB3 besser aus als ich. Mit phpBB3 hab ich mich noch nie so intensiv befasst, wie jetzt, deswegen komm ich wohl auch nicht immer alleine weiter.

Wenn ihr mir helfen könntet, wäre ich euch sehr dankbar, denn ansonsten schaff ich das ganze wohl nicht mehr.

Ich bedanke mich schonmal im voraus und verbleibe

mit freundlichen Grüßen,
Alexander P.

Verfasst: 05.08.2008 10:53
von alexanderzwei
Sry für Doppelpost!

Weiß keiner eine Lösung?

Wenn mir jemand helfen kann, dann würde ich mich sehr freuen, wenn wenn derjenige mir ein paar Tipps geben kann.

Ich bedanke mich schonmal im voraus.

Grüße,
Alex

Verfasst: 05.08.2008 11:12
von Dr.Death
Cannot redeclare display_forums() --> Diese Funktion wurde bereits definiert.

Workaround:

benutze anstelle von include ( xxxx ) ---> include_once ( xxxx )

Lesestoff: http://de2.php.net/manual/de/function.include-once.php

Verfasst: 05.08.2008 12:06
von alexanderzwei
Dr.Death hat geschrieben:Cannot redeclare display_forums() --> Diese Funktion wurde bereits definiert.

Workaround:

benutze anstelle von include ( xxxx ) ---> include_once ( xxxx )

Lesestoff: http://de2.php.net/manual/de/function.include-once.php
Habe ich schon versucht, funktioniert aber nicht.
Es wird zwar kein Fehler mehr angezeigt, allerdings bleiben die Zahlen weg...

Verfasst: 05.08.2008 13:03
von Dr.Death
Dann stell doch mal Deinen Code als TXT Datei bereit....

Verfasst: 05.08.2008 14:08
von alexanderzwei
Ok, bitte:

overall_header.html
functions.php
(ab Zeile 3470)

Verfasst: 06.08.2008 16:09
von alexanderzwei
Hat jemand schon eine Lösung?

Wenn ja, würde ich mich freuen, wenn mir jemand helfen könnte.

Vielen Dank schon einmal!

Grüße,
Alex

Verfasst: 06.08.2008 16:54
von Dr.Death
in der function.php sollte es so aussehen:

Code: Alles auswählen

/* Userbox Start */

	if (!function_exists('get_user_avatar')) 
	{ 
		include_once($phpbb_root_path . 'includes/functions_display.' . $phpEx); 
	}

	$total_posts	= $config['num_posts'];
	$total_topics	= $config['num_topics'];
	$total_users	= $config['num_users'];

	$rank_title = $rank_img = '';
	get_user_rank($user->data['user_rank'], $user->data['user_posts'], $rank_title, $rank_img, $rank_img_src);

	$userbox_online_users = 'Besucher online: <b>'.$online_users['total_online'].'</b><br>';
	$userbox_online_users .= 'Davon '.$online_users['visible_online'].' Registrierte';

	if ($config['load_online_guests'])
	{
			$userbox_online_users .= ', '.$online_users['hidden_online'].' Unsichtbare';
		$userbox_online_users .= ' und '.$online_users['guests_online'].' Gäste.';
	} 
	else 
	{
		$userbox_online_users .= ' und '.$online_users['hidden_online'].' Unsichtbare.';
	}
	   
/* Userbox End */
Was aber noch absolut schlecht ist: Hardcodierte Sprache ;-(

Da solltest Du noch dran arbeiten.

Verfasst: 06.08.2008 17:47
von alexanderzwei
Dr.Death hat geschrieben: Was aber noch absolut schlecht ist: Hardcodierte Sprache ;-(

Da solltest Du noch dran arbeiten.
Danke für deinen Tipp.
Ich weiß zwar nicht, was du mit "Hardcodierte Sprache" genau meinst, aber ich bin halt kein Experte.
Ich wollte mich mal dran versuchen, um mich weiterzubilden.
In den nächsten 2 Jahren werde ich aber besser werden, da ich jetzt auf der FOS bin.

Trotz alledem weiß ich noch nicht, wie ich das Problem in den Griff kriege..

Verfasst: 06.08.2008 17:54
von Dr.Death
Hardcodierte Sprache:

Code: Alles auswählen

$userbox_online_users .= ' und '.$online_users['guests_online'].' Gäste.';
Mit Sprachvariablen:

Code: Alles auswählen

$userbox_online_users .= $user->lang['AND']. ' ' . $online_users['guests_online'] . ' ' . $user->lang['GUESTS'];
Dies ist nur ein Beispiel. Besser ist in diesem fall mit sprintf(); zu arbeiten