Wenn man Beiträge schreibt, kommen Nebenbeiträge!

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

Beitrag von gn#36 »

Hier nochmals alle relevanten Änderungen auf einen Blick:
Achtung wichtig: Zunächst alle zu ändernden Dateien sichern!
gn#36 hat geschrieben: Öffne page_header.php
Suche

Code: Alles auswählen

if ( !defined('IN_PHPBB') )
{
   die("Hacking attempt");
}

define('HEADER_INC', TRUE);
Danach einfügen

Code: Alles auswählen

if(!defined('SHOW_ONLINE'))
{
define('SHOW_ONLINE', true);
} 
gn#36 hat geschrieben:Änderung:
Als erstes verschieben wir den Start der Funktion ein wenig nach vorne:
finde

Code: Alles auswählen

if (defined('SHOW_ONLINE'))
{
direkt dahinter kommt

Code: Alles auswählen

function show_online_box_everywhere($forum_id=0,$display_forum=false)
{
	if(!$display_forum)
	{
		unset($forum_id);
	}
global $lang, $images,$template,$theme,$userdata,$board_config,$db;
global $logged_visible_online,$logged_hidden_online,$guests_online,$online_userlist,$l_online_users; 
gn#36 hat geschrieben: Suche weiter unten

Code: Alles auswählen

}

//
// Obtain number of new private messages
// if user is logged in
//
DAVOR einfügenÄnderung:

Code: Alles auswählen

if(!$forum_id)
   {
//
// If you don't use these stats on your index you may want to consider
// removing them
//
$total_posts = get_db_stat('postcount');
$total_users = get_db_stat('usercount');
$newest_userdata = get_db_stat('newestuser');
$newest_user = $newest_userdata['username'];
$newest_uid = $newest_userdata['user_id'];

if( $total_posts == 0 )
{
   $l_total_post_s = $lang['Posted_articles_zero_total'];
}
else if( $total_posts == 1 )
{
   $l_total_post_s = $lang['Posted_article_total'];
}
else
{
   $l_total_post_s = $lang['Posted_articles_total'];
}

if( $total_users == 0 )
{
   $l_total_user_s = $lang['Registered_users_zero_total'];
}
else if( $total_users == 1 )
{
   $l_total_user_s = $lang['Registered_user_total'];
}
else
{
   $l_total_user_s = $lang['Registered_users_total'];
}

$template->assign_vars(array(
      'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),
      'TOTAL_USERS' => sprintf($l_total_user_s, $total_users),
      'NEWEST_USER' => sprintf($lang['Newest_user'], '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$newest_uid") . '">', $newest_user, '</a>'),

      'FORUM_IMG' => $images['forum'],
      'FORUM_NEW_IMG' => $images['forum_new'],
      'FORUM_LOCKED_IMG' => $images['forum_locked'],

      'L_FORUM' => $lang['Forum'],
      'L_TOPICS' => $lang['Topics'],
      'L_REPLIES' => $lang['Replies'],
      'L_VIEWS' => $lang['Views'],
      'L_POSTS' => $lang['Posts'],
      'L_LASTPOST' => $lang['Last_Post'],
      'L_NO_NEW_POSTS' => $lang['No_new_posts'],
      'L_NEW_POSTS' => $lang['New_posts'],
      'L_NO_NEW_POSTS_LOCKED' => $lang['No_new_posts_locked'],
      'L_NEW_POSTS_LOCKED' => $lang['New_posts_locked'],
      'L_ONLINE_EXPLAIN' => $lang['Online_explain'],

      'L_MODERATOR' => $lang['Moderators'],
      'L_FORUM_LOCKED' => $lang['Forum_is_locked'],
      'L_MARK_FORUMS_READ' => $lang['Mark_all_forums'],

      'U_MARK_READ' => append_sid("index.$phpEx?mark=forums"))
   );
}
}
show_online_box_everywhere();
gn#36 hat geschrieben:EDIT: Zur besseren Übersicht: Das zugehörige andere Thema findet sich hier


finde DAVOR einfügen

Code: Alles auswählen

if(isset($forum_id)&& defined('SHOW_ONLINE') && $forum_id)
{
	$logged_visible_online = 0;
	$logged_hidden_online = 0;
	$guests_online = 0;
	$online_userlist = '';
	$l_online_users = '';
	show_online_box_everywhere($forum_id,true);
	$template->assign_vars(array(
		'TOTAL_USERS_ONLINE' => $l_online_users,
		'LOGGED_IN_USER_LIST' => $online_userlist,
		));
}
So, wie man sieht etwas komplizierter, ich hoffe ich habe jetzt keine Änderungen, die ich vorgenommen hatte vergessen. Wenn doch wirst du das vermutlich merken...
Ich hoffe ich habe das jetzt auf die schnelle korrekt zusammengefasst. Nach dieser Änderung kann die Box "Wer ist online" im Page_header platziert werden (nirgendwo anders außer weiterhin im Index).
Zuletzt geändert von gn#36 am 03.04.2007 23:28, insgesamt 1-mal geändert.
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.
Benutzeravatar
Shauku
Mitglied
Beiträge: 120
Registriert: 20.11.2006 20:24

Beitrag von Shauku »

Nachdem ich die genannten Modifikationen in der page_header.php erledigt habe, kommt folgendes:

---

Fatal error: Call to undefined function show_online_everywhere() in .../.../includes/page_header.php on line 442

---

Auszug page_header.php:

---
  • 441 * }
    442 * show_online_everywhere();
    443 *
---
Ich hoffe ich habe das jetzt auf die schnelle korrekt zusammengefasst. Nach dieser Änderung kann die Box "Wer ist online" im Page_header platziert werden (nirgendwo anders außer weiterhin im Index).
Was willst du damit sagen?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Du musst es schon alles umsetzen und nicht nur die Hälfte. Die Funktion heisst nicht

Code: Alles auswählen

show_online_everywhere()
, sondern

Code: Alles auswählen

show_online_box_everywhere()
Warum der Coder sie nicht

Code: Alles auswählen

show_online_box_everywhere_you_want_to_have_an_online_box_available_for_users_or_guests_depending_on_your_own_humble_opinion_on_needing_such_a_wonderful_box()
genannt hat, weiss ich nicht. :roll:
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Der von Miriam gepostete Fehler ist wohl korrekt, ich habe die Modifikation oben jetzt entsprechend korrigiert.

Mit der Anmerkung ist gemeint, dass die Box in der overall_header.tpl Datei zu erscheinen hat und nirgendwo sonst funktionieren wird, sofern man sich in einem Forum oder Thema befindet ganz einfach weil die hierzu gehörigen Templatevariablen doppelt verwendet werden (einmal für die Gesamtanzeige "Wer ist online" und einmal für die Anzeige wer das jeweilige Forum betrachtet).
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.
Benutzeravatar
Shauku
Mitglied
Beiträge: 120
Registriert: 20.11.2006 20:24

Beitrag von Shauku »

gn#36 hat geschrieben:Der von Miriam gepostete Fehler ist wohl korrekt, ich habe die Modifikation oben jetzt entsprechend korrigiert.

Mit der Anmerkung ist gemeint, dass die Box in der overall_header.tpl Datei zu erscheinen hat und nirgendwo sonst funktionieren wird, sofern man sich in einem Forum oder Thema befindet ganz einfach weil die hierzu gehörigen Templatevariablen doppelt verwendet werden (einmal für die Gesamtanzeige "Wer ist online" und einmal für die Anzeige wer das jeweilige Forum betrachtet).
Die Doppelbelegung der Variablen ist mir auch schon Aufgefallen. Deswegen hab ich übrigends auch ein Post verfasst: User Online auch in Viewforum und Viewtopic anzeigen

Leider bringt mir die header Lösung nicht so viel wie erhofft, bzw. nicht das gewünschte.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Dann solltest du einfach die Variablen umbenennen. Da die Anzeige ursprünglich nur in der overall_header.tpl gebraucht wurde habe ich keine Notwendigkeit gesehen das zu tun. Du musst im Prinzip das hier:

Code: Alles auswählen

$template->assign_vars(array(
      'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),
      'TOTAL_USERS' => sprintf($l_total_user_s, $total_users),
      'NEWEST_USER' => sprintf($lang['Newest_user'], '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$newest_uid") . '">', $newest_user, '</a>'),

      'FORUM_IMG' => $images['forum'],
      'FORUM_NEW_IMG' => $images['forum_new'],
      'FORUM_LOCKED_IMG' => $images['forum_locked'],

      'L_FORUM' => $lang['Forum'],
      'L_TOPICS' => $lang['Topics'],
      'L_REPLIES' => $lang['Replies'],
      'L_VIEWS' => $lang['Views'],
      'L_POSTS' => $lang['Posts'],
      'L_LASTPOST' => $lang['Last_Post'],
      'L_NO_NEW_POSTS' => $lang['No_new_posts'],
      'L_NEW_POSTS' => $lang['New_posts'],
      'L_NO_NEW_POSTS_LOCKED' => $lang['No_new_posts_locked'],
      'L_NEW_POSTS_LOCKED' => $lang['New_posts_locked'],
      'L_ONLINE_EXPLAIN' => $lang['Online_explain'],

      'L_MODERATOR' => $lang['Moderators'],
      'L_FORUM_LOCKED' => $lang['Forum_is_locked'],
      'L_MARK_FORUMS_READ' => $lang['Mark_all_forums'],

      'U_MARK_READ' => append_sid("index.$phpEx?mark=forums"))
   ); 
Außerhalb der Funktion lauffähig machen, oder beim ersten Durchlauf an andere Variablen zuweisen (z.b. U_X_MARK_READ so dass keine Konflikte entstehen) als beim zweiten (hier nimmst du dann die Standardwerte) In deiner Datei verwendest du dann deine geänderten Variablen und schon kannst du das verwenden wo du willst.
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.
Antworten

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