chCounter in phpBb3 einbinden

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt, um einen neuen Mod zu entwickeln, geht's in [3.0.x] Mods in Entwicklung weiter.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

chCounter in phpBb3 einbinden

Beitrag von Helmut »

Hallo 4seven,

ich habe mal das Thema chCounter abgetrennt, es passte nicht wirklich zum anderen Thema.

Ich habe inzwischen eine Lösung für das Problem mit den Sprachvariablen gefunden, welche aber etwas Aufwendiger ist. Dazu gehe ich her und hole mir die Daten direkt aus der Datenbank und erzeuge selber die Anzeige, damit bin ich völlig Unabhängig vom chCounter. Um das zu bewerkstelligen sind einige Dateien zu erstellen und den Präfix der Tabellen vom chCounter zu ändern. Hier nun die Anleitung:

1. Den Präfix der Tabellen vom chCounter in der Datenbank ändern von chc_* nach phpbb3_chc_* (mit phpmyadmin). Dabei stellt phpbb3_ den Präfix des Forums dar. Dieser kann auch abweichend sein (z.B. phpbb_ , irgendwas_ , .....), das ist von den Angaben des Users bei der Installation des Forums abhängig.

2. Öffne die Datei config.inc.php im Verzeichnis includes/ vom chCounter und ersetze:

Code: Alles auswählen

	// Prefix of the chCounter database tables:
	// Präfix der chCounter Datenbanktabellen:
	// Préfixe des tableaux de la base de données du chCounter:
	'tables_prefix' => 'chc_'
mit folgendem Inhalt:

Code: Alles auswählen

	// Prefix of the chCounter database tables:
	// Präfix der chCounter Datenbanktabellen:
	// Préfixe des tableaux de la base de données du chCounter:
	'tables_prefix' => 'phpbb3_chc_'
3. In die constands.php folgendes am Ende vor ?> eintragen:

Code: Alles auswählen

//chCounter
define('CHC_DATA_TABLE',		$table_prefix . 'chc_data');
4. Öffne die prosilver/templates/index_body.html und finde:

Code: Alles auswählen

<!-- INCLUDE overall_footer.html -->
Füge davor ein:

Code: Alles auswählen

<!-- INCLUDE chcounter_body.html -->
5. Erstelle eine Datei im Verzeichnis prosilver/templates/ mit dem Namen chcounter_body.html und füge folgendes ein:

Code: Alles auswählen

<h3>{L_COUNTER2}</h3>
		<p>
		{L_VISITOR_ALL}&nbsp;<strong>{VISITOR_ALL}</strong>&nbsp;{COUNTER_START}<br />
		{L_VISITOR_TODAY}<strong>{VISITOR_TODAY}</strong>&nbsp; {L_VISITOR_TODAY_TIME}<strong>{VISITOR_TODAY_TIME}</strong> &bull;			
		{L_VISITOR_YESTERDAY}<strong>{VISITOR_YESTERDAY}</strong> &bull;			
		{L_VISITOR_MAX_ONLINE}<strong>{VISITOR_MAX_ONLINE}</strong>&nbsp; {L_VISITOR_MAX_ONLINE_TIME}<strong>{VISITOR_MAX_ONLINE_TIME}</strong> &bull;		
		{L_VISITOR_MAX_PER_DAY}<strong>{VISITOR_MAX_PER_DAY}</strong>&nbsp; {L_VISITOR_MAX_PER_DAY_TIME}<strong>{VISITOR_MAX_PER_DAY_TIME}</strong> &bull;
		{L_VISITOR_PAGES_ALL}<strong>{VISITOR_PAGES_ALL}</strong> &bull;			
		{L_VISITOR_PAGES_TODAY}<strong>{VISITOR_PAGES_TODAY}</strong> &bull;				
		{L_VISITOR_PAGES_YESTERDAY}<strong>{VISITOR_PAGES_YESTERDAY}</strong> &bull;			
		{L_VISITOR_PAGES_USER}<strong>{VISITOR_PAGES_USER}</strong> &bull;			
		{L_VISITOR_PAGES_USER_PAGE}<strong>{VISITOR_PAGES_USER_PAGE}</strong> &bull;				
		{L_VISITOR_TIME_DAY}<strong>{VISITOR_TIME_DAY}</strong> &bull;					
		{L_VISITOR_USER_DAY}<strong>{VISITOR_USER_DAY}</strong> &bull;		
		{L_VISITOR_PAGES_DAY}<strong>{VISITOR_PAGES_DAY}</strong> &bull;				
		{L_VISITOR_MAX_PAGES_DAY}<strong>{VISITOR_MAX_PAGES_DAY}</strong>&nbsp; {L_VISITOR_MAX_PAGES_DAY_TIME}<strong>{VISITOR_MAX_PAGES_DAY_TIME}</strong>		
		</p>
6. Erstelle eine Datei im Verzeichnis / mit dem Namen chcounter.php und füge folgendes ein:

Code: Alles auswählen

<?php
/**
*
* @author Original Author webmaster@selbsthilfeverband-inkontinenz.org
* 
*
* @version $Id: chcounter.php,v 0.0.1 2008/03/11 Exp $
* @copyright (c) 2008 Helmut Schreiber
* @license http://opensource.org/licenses/gpl-license.php GNU Public License 
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
	die('Hacking Attempt!'); 
}

define('IN_PHPBB', true); // we tell the page that it's going to be using phpBB, this is important.
$phpEx = substr(strrchr(__FILE__, '.'), 1); // Set the File extension for page-wide usage.

// Language file (see documentation related to language files)
$user->setup('ch_counter');

//Select data from database

$sql = "SELECT * 
	FROM ". CHC_DATA_TABLE .'
	ORDER BY besucher_gesamt ASC';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
	$visitor_all 	= $row['besucher_gesamt'];
	$visitor_today = $row['besucher_heute'];
	$visitor_today_time = $row['heute_timestamp'];
	$visitor_yesterday = $row['besucher_gestern'];
	$visitor_max_online = $row['max_online:anzahl'];
	$visitor_max_online_time = $row['max_online:timestamp'];
	$visitor_max_per_day = $row['max_besucher_pro_tag:anzahl'];
	$visitor_max_per_day_time = $row['max_besucher_pro_tag:timestamp'];
	$visitor_pages_all = $row['seitenaufrufe_gesamt'];
	$visitor_pages_today = $row['seitenaufrufe_heute'];
	$visitor_pages_yesterday = $row['seitenaufrufe_gestern'];
	$visitor_pages_user = $row['seitenaufrufe_pro_besucher:besucher'];
	$visitor_pages_user_page = $row['seitenaufrufe_pro_besucher:seitenaufrufe'];
	$visitor_time_day = $row['durchschnittlich_pro_tag:timestamp'];
	$visitor_user_day = $row['durchschnittlich_pro_tag:besucher'];
	$visitor_pages_day = $row['durchschnittlich_pro_tag:seitenaufrufe'];
	$visitor_max_pages_day = $row['max_seitenaufrufe_pro_tag:anzahl'];
	$visitor_max_pages_day_time = $row['max_seitenaufrufe_pro_tag:timestamp'];
}

	$template->assign_vars(array(
		'VISITOR_ALL'				=> $visitor_all,
		'VISITOR_TODAY'				=> $visitor_today,
		'VISITOR_TODAY_TIME'			=> $user->format_date($visitor_today_time),
		'VISITOR_YESTERDAY'			=> $visitor_yesterday,
		'VISITOR_MAX_ONLINE'			=> $visitor_max_online,
		'VISITOR_MAX_ONLINE_TIME'		=> $user->format_date($visitor_max_online_time),
		'VISITOR_MAX_PER_DAY'		=> $visitor_max_per_day,
		'VISITOR_MAX_PER_DAY_TIME'	=> $user->format_date($visitor_max_per_day_time),
		'VISITOR_PAGES_ALL'			=> $visitor_pages_all,
		'VISITOR_PAGES_TODAY'		=> $visitor_pages_today,		
		'VISITOR_PAGES_YESTERDAY'	=> $visitor_pages_yesterday,		
		'VISITOR_PAGES_USER'			=> $visitor_pages_user,
		'VISITOR_PAGES_USER_PAGE'		=> $visitor_pages_user_page,		
		'VISITOR_TIME_DAY'			=> $user->format_date($visitor_time_day),		
		'VISITOR_USER_DAY'			=> $visitor_user_day,		
		'VISITOR_PAGES_DAY'			=> $visitor_pages_day,		
		'VISITOR_MAX_PAGES_DAY'		=> $visitor_max_pages_day,		
		'VISITOR_MAX_PAGES_DAY_TIME'	=> $user->format_date($visitor_max_pages_day_time),		
		'COUNTER_START'			=> sprintf($user->lang['COUNTER_START'], $user->format_date($config['board_startdate'], false, true)),		
	));

$db->sql_freeresult($result);

$template->set_filenames(array(
	'body' => 'chcounter_body.html')
);

?>
7. Erstelle eine Datei im Verzeichnis language/de/ mit dem Namen ch_counter.php und füge folgendes ein:

Code: Alles auswählen

<?php
/**
* DO NOT CHANGE
*/
if (empty($lang) || !is_array($lang))
{
    $lang = array();
}

// DEVELOPERS PLEASE NOTE
//
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
//
// Placeholders can now contain order information, e.g. instead of
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
// translators to re-order the output of data while ensuring it remains correct
//
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
// equally where a string contains only two placeholders which are used to wrap text
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine

//chCounter
$lang = array_merge($lang, array(
		'VISITOR_ALL'				=> 'Besucher gesamt',
		'VISITOR_TODAY'				=> 'Besucher heute: ',
		'VISITOR_TODAY_TIME'			=> 'am ',
		'VISITOR_YESTERDAY'			=> 'Besucher gestern: ',
		'VISITOR_MAX_ONLINE'			=> 'Besucher gesamt gleichzeitig Online: ',
		'VISITOR_MAX_ONLINE_TIME'		=> 'am ',
		'VISITOR_MAX_PER_DAY'		=> 'Besucher gleichzeitig Online pro Tag: ',
		'VISITOR_MAX_PER_DAY_TIME'	=> 'am ',
		'VISITOR_PAGES_ALL'			=> 'Seitenaufrufe gesamt: ',
		'VISITOR_PAGES_TODAY'		=> 'Seitenaufrufe heute: ',		
		'VISITOR_PAGES_YESTERDAY'	=> 'Seitenaufrufe gestern: ',		
		'VISITOR_PAGES_USER'			=> 'Seitenaufrufe pro Besucher: ',
		'VISITOR_PAGES_USER_PAGE'		=> 'Seitenaufrufe pro Besucher pro Seite: ',		
		'VISITOR_TIME_DAY'			=> 'am ',		
		'VISITOR_USER_DAY'			=> 'Durchschnittlich Besucher pro Tag: ',		
		'VISITOR_PAGES_DAY'			=> 'Durchschnittlich Seitenaufrufe pro Tag: ',		
		'VISITOR_MAX_PAGES_DAY'		=> 'Max. Seitenaufrufe pro Tag: ',		
		'VISITOR_MAX_PAGES_DAY_TIME'	=> 'am ',		
		'COUNTER_START'			=> 'seit dem %s',
		'COUNTER2' 				=> 'Besucherstatistik',

));

?>
Achtung! Diese Datei unter UTF-8 ohne BOM abspeichern!


8. Öffne die Datei index.php aus dem Root Verzeichnis und finde darin

Code: Alles auswählen

include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
Füge darunter ein

Code: Alles auswählen

include($phpbb_root_path . 'chcounter.' . $phpEx);
Damit sollte die einfache Besucherstatistik unterhalb den normalen Statistik zu sehen sein. Was alles Angezeigt wird, das kann nun frei bestimmt werden, auch das Style lässt sich nun ohne Probleme anpassen. 4seven, du kannst ja nochmal prüfen ob ich keinen Fehler bei den Sprachvariablen drinnen habe und der Text dazu passt.


Wegen der Problematik mit den Umlauten in der chCounter Statistik bin ich nicht weiter gekommen. Ein Versuch, die Daten aus der Tabelle auszulesen zeigte, dass die Umlaute korrekt nach UTF-8 in der Tabelle abgespeichert sind, ich konnte sie ohne Probleme direkt richtig auslesen. Daher liegt das Problem wohl am chCounter selber.

Gruß Helmut
Zuletzt geändert von Helmut am 26.08.2008 11:33, insgesamt 3-mal geändert.
Ich bin nicht ganz dicht.... na und.
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Beitrag von 4seven »

Hallo Helmut,

bin absolut begeistert > Really Great Work :grin:

So ist der Counter "wahrhaftig" integriert.

Wenn auch aus der Not geboren, was ja oft die Basis von großen Erfindungen ist. Ich würde dieses Problem mit den Umlauten (Sonderzeichen(!)), was selten zu sein scheint, im CHCounter Supportforum melden. Dann können die das mal analysieren. Wie gesagt, für mich kann ich es nicht nachvollziehen.

Nochmals Kompliment :wink:

lg
4seven
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo 4seven,

ich habe gerade noch einen kleinen Fehler gefunden bei dem das Startdatum des Zählers nicht angezeigt wird.

Öffne chcounter.php und finde:

Code: Alles auswählen

		'COUNTER_START'			=> sprintf($user->lang['COUNTER_START'], $user->format_date($config['counter_startdate'], false, true)),		
ersetze das durch folgende Zeile:

Code: Alles auswählen

		'COUNTER_START'			=> sprintf($user->lang['COUNTER_START'], $user->format_date($config['board_startdate'], false, true)),	
Damit wird das Startdatum des Forums richtig eingetragen. Wenn du das Startdatum vom chCounter abfragen willst, dann musst du den Wert timestamp_start_pseudo aus der Tabelle phpbb3_chc_config auslesen.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo 4seven,

das Problem mit den Umlauten in der Statistik ist nun auch gelöst, es fehlte noch @mysql_query("SET NAMES 'utf8'"); in der chcounter/includes/mysql.class.php. Hier die betreffende Stelle:

Code: Alles auswählen

	function chC_mysql( $db_server, $db_user, $db_passwort, $db_database = FALSE, $debug = '', $force_new_connection = FALSE ) 
	{
		if( $debug == 'DEBUG_OFF' )
		{
			$this->debug = FALSE;
		}
		elseif( $debug == 'DEBUG_ON' )
		{
			$this->debug = TRUE;

		} 
		$this->connection_id = @mysql_connect( $db_server, $db_user, $db_passwort, $force_new_connection ) OR $this->_handle_error();
		if( $db_database != FALSE )
		{
			@mysql_select_db( $db_database ) OR $this->_handle_error();
		}
		@mysql_query("SET NAMES 'utf8'");
	}
Gruß Helmut :wink:
Ich bin nicht ganz dicht.... na und.
Caipi123
Mitglied
Beiträge: 7
Registriert: 19.05.2008 13:57

Beitrag von Caipi123 »

hallo zusammen, ich hätte auch gerne den schönen Einbau aber habs jetzt ettliche male probiert und bei mir wird auf der Index nur folgendes angezeigt, hab ihr mir nen tip?

Code: Alles auswählen

{ COUNTER2 }

{ VISITOR_ALL }  
{ VISITOR_TODAY }  { VISITOR_TODAY_TIME } • { VISITOR_YESTERDAY } • { VISITOR_MAX_ONLINE }  { VISITOR_MAX_ONLINE_TIME } • { VISITOR_MAX_PER_DAY }  { VISITOR_MAX_PER_DAY_TIME } • { VISITOR_PAGES_ALL } • { VISITOR_PAGES_TODAY } • { VISITOR_PAGES_YESTERDAY } • { VISITOR_PAGES_USER } • { VISITOR_PAGES_USER_PAGE } • { VISITOR_TIME_DAY } • { VISITOR_USER_DAY } • { VISITOR_PAGES_DAY } • { VISITOR_MAX_PAGES_DAY }  { VISITOR_MAX_PAGES_DAY_TIME }
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo Caipi123,

sieht so aus als ob deine Sprach Datei nicht gefunden wird, hast du diese auch im richtigen Verzeichnis (.../language/de/) erstellt?

Beachte auch, dass die Datei unter UTF-8 ohne BOM abgespeichert wird und dass diese Datei für jede verwendete Sprache vorhanden sein muss. Natürlich darfst du auch nicht vergessen, den Cache im ACP zu leeren sonst könnte es auch zu Problemen kommen.

Gruß Helmut :wink:
Ich bin nicht ganz dicht.... na und.
Caipi123
Mitglied
Beiträge: 7
Registriert: 19.05.2008 13:57

Beitrag von Caipi123 »

jetzt erschlag mich nicht aber ich bearbeite meine Dateien mit dem WordPad :oops: da hab ich nur die Möglichkeit UTF-8 zu speichern vom BOM finde ich da nichts... geht leider trotzdem noch nicht Cache habe ich geleert... :roll:

Danke vorerst mal für deine schnelle Antwort, hast noch ne Idee? Muss ich in der Counter-Konfiguration selbst noch was anpassen/ändern?
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17400
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

KB:166
Caipi123
Mitglied
Beiträge: 7
Registriert: 19.05.2008 13:57

Beitrag von Caipi123 »

wieder etwas dazu gelernt :grin: hab die Datei nochmal neu erstellt, eingespielt und Cache geleert aber leider nach wie vor das selbe ergebnis :cry:
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo Caipi123,

hm ..... sollte dann eigentlich gehen, in welchem Verzeichnis hast du denn die Datei ch_counter.php erstellt?

Was mich auch etwas wundert, das sind die Leerzeichen in deinem Beispiel (Fehlermeldung)

Code: Alles auswählen

{ COUNTER2 }

{ VISITOR_ALL } 
{ VISITOR_TODAY }  { VISITOR_TODAY_TIME } • { VISITOR_YESTERDAY } • { VISITOR_MAX_ONLINE }  { VISITOR_MAX_ONLINE_TIME } • { VISITOR_MAX_PER_DAY }  { VISITOR_MAX_PER_DAY_TIME } • { VISITOR_PAGES_ALL } • { VISITOR_PAGES_TODAY } • { VISITOR_PAGES_YESTERDAY } • { VISITOR_PAGES_USER } • { VISITOR_PAGES_USER_PAGE } • { VISITOR_TIME_DAY } • { VISITOR_USER_DAY } • { VISITOR_PAGES_DAY } • { VISITOR_MAX_PAGES_DAY }  { VISITOR_MAX_PAGES_DAY_TIME }
Am besten erstellst du die Datei chcounter_body.html auch noch einmal.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Antworten

Zurück zu „[3.0.x] Mod Suche/Anfragen“